home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / inter36b.zip / INTERRUP.H < prev    next >
Text File  |  1993-08-01  |  181KB  |  4,790 lines

  1. Interrupt List, part 8 of 10
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. --------D-30---------------------------------
  4. INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
  5.    the CALL 5 entry point does a FAR jump to here
  6. Note:    under DOS 2+, the instruction at PSP:0005 points two bytes too low in
  7.       memory
  8. SeeAlso: INT 21/AH=26h
  9. --------D-31---------------------------------
  10. INT 31 - overwritten by CP/M jump instruction in INT 30
  11. --------v-31---------------------------------
  12. INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
  13. Note:    if one of the Vacsina viruses is resident, the low byte of this
  14.       interrupt still contains the last byte of the INT 30 CP/M JMP
  15.       instruction, but the remaining three bytes are 7Fh 39h followed
  16.       by the Vacsina version number
  17. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
  18. --------E-310000-----------------------------
  19. INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
  20.     AX = 0000h
  21.     CX = number of descriptors to allocate
  22. Return: CF clear if successful
  23.         AX = base selector
  24.     CF set on error
  25.         AX = error code (DPMI 1.0+) (see below)
  26. Notes:    DPMI is the DOS Protected-Mode Interface
  27.     the base and limit of the returned descriptors will be 0, and the type
  28.       will be "data"
  29.     add the value returned by INT 31/AX=0003h to move to subsequent
  30.       descriptors if multiple descriptors were allocated
  31.     not supported by MS Windows 3.0 in Standard mode
  32. SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
  33.  
  34. Values for error code:
  35.  0000h-7FFFh DOS error passed through by DPMI
  36.  8001h    unsupported function
  37.  8002h    object in wrong state for function
  38.  8003h    system integrity would be endangered
  39.  8004h    deadlock detected
  40.  8005h    pending serialization request cancelled
  41.  8010h    out of DPMI internal resources
  42.  8011h    descriptor unavailable
  43.  8012h    linear memory unavailable
  44.  8013h    physical memory unavailable
  45.  8014h    backing store unavailable
  46.  8015h    callback unavailable
  47.  8016h    handle unavailable
  48.  8017h    maximum lock count exceeded
  49.  8018h    shared memory already serialized exclusively by another
  50.  8019h    shared memory already serialized shared by another client
  51.  8021h    invalid value for numeric or flag parameter
  52.  8022h    invalid segment selector
  53.  8023h    invalid handle
  54.  8024h    invalid callback
  55.  8025h    invalid linear address
  56.  8026h    request not supported by hardware
  57. --------E-310001-----------------------------
  58. INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
  59.     AX = 0001h
  60.     BX = selector to free
  61. Return: CF clear if successful
  62.     CF set on error
  63.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  64. Notes:    only one descriptor is freed per call
  65.     the program's initial CS, DS, and SS descriptors may be freed
  66.     (DPMI 1.0+) any segment registers containing the freed selector are
  67.       set to 0000h
  68.     not supported by MS Windows 3.0 in Standard mode
  69. SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
  70. --------E-310002-----------------------------
  71. INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
  72.     AX = 0002h
  73.     BX = real mode segment
  74. Return: CF clear if successful
  75.         AX = selector corresponding to real mode segment (64K limit)
  76.     CF set on error
  77.         AX = error code (DPMI 1.0+) (8011h) (see AX=0000h)
  78. Notes:    multiple calls for the same real mode segment return the same selector
  79.     the returned descriptor can never be modified or freed
  80.     not supported by MS Windows 3.0 in Standard mode
  81. --------E-310003-----------------------------
  82. INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
  83.     AX = 0003h
  84. Return: CF clear
  85.         AX = value to add to get next sequential selector
  86. Notes:    the increment will be a power of two
  87.     not supported by MS Windows 3.0 in Standard mode
  88. SeeAlso: AX=0000h
  89. --------E-310004-----------------------------
  90. INT 31 P - DPMI 0.9+ - LOCK SELECTOR
  91.     AX = 0004h
  92.     BX = selector to lock (prevent paging)
  93. Return: ???
  94. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  95.       specification, this function is called by MS Windows TASKMAN,
  96.       PROGMAN, and KERNEL
  97. SeeAlso: AX=0005h,AX=0600h
  98. --------E-310005-----------------------------
  99. INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
  100.     AX = 0005h
  101.     BX = selector to unlock (permit paging)
  102. Return: ???
  103. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  104.       specification, this function is called by MS Windows TASKMAN,
  105.       PROGMAN, and KERNEL
  106. SeeAlso: AX=0004h,AX=0601h
  107. --------E-310006-----------------------------
  108. INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
  109.     AX = 0006h
  110.     BX = selector
  111. Return: CF clear if successful
  112.         CX:DX = linear base address of segment
  113.     CF set on error
  114.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  115. Note:    not supported by MS Windows 3.0 in Standard mode
  116. SeeAlso: AX=0007h,INT 21/AX=3504h
  117. --------E-310007-----------------------------
  118. INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
  119.     AX = 0007h
  120.     BX = selector
  121.     CX:DX = linear base address
  122. Return: CF clear if successful
  123.     CF set on error
  124.         AX = error code (DPMI 1.0+) (8022h,8025h) (see AX=0000h)
  125. Notes:    only modify descriptors allocated with INT 31/AX=0000h
  126.     only the low 24 bits of the address will be used by 16-bit DPMI
  127.       implementations even on a 386 or higher
  128.     DPMI 1.0+ automatically reloads any segment registers containing the
  129.       selector being modified
  130.     not supported by MS Windows 3.0 in Standard mode
  131. SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
  132. SeeAlso: INT 21/AH=E9h"OS/286"
  133. --------E-310008-----------------------------
  134. INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
  135.     AX = 0008h
  136.     BX = selector
  137.     CX:DX = segment limit
  138. Return: CF clear if successful
  139.     CF set on error
  140.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  141. Notes:    CX must be zero for 16-bit DPMI implementations
  142.     limits greater than 1MB must be page aligned (low 12 bits set)
  143.     only modify descriptors allocated with INT 31/AX=0000h
  144.     DPMI 1.0+ automatically reloads any segment registers containing the
  145.       selector being modified
  146.     not supported by MS Windows 3.0 in Standard mode
  147. SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
  148. --------E-310009-----------------------------
  149. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
  150.     AX = 0009h
  151.     BX = selector
  152.     CL = access rights/type byte
  153.     CH = 80386 extended rights/type byte (32-bit DPMI implementations only)
  154. Return: CF clear if successful
  155.     CF set on error
  156.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  157. Notes:    if the Present bit is clear, CL bits 0-3 may have any value
  158.     DPMI 1.0+ automatically reloads any segment registers containing the
  159.       selector being modified
  160.     not supported by MS Windows 3.0 in Standard mode
  161. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h
  162. --------E-31000A-----------------------------
  163. INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
  164.     AX = 000Ah
  165.     BX = selector
  166. Return: CF clear if successful
  167.         AX = new data selector
  168.     CF set on error
  169.         AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
  170. Notes:    fails if selector in BX is not a code segment or is invalid
  171.     use INT 31/AX=0001h to free new selector
  172.     future changes to the original selector will not be reflected in the
  173.       returned alias selector
  174.     not supported by MS Windows 3.0 in Standard mode
  175. SeeAlso: AX=0001h
  176. --------E-31000B-----------------------------
  177. INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
  178.     AX = 000Bh
  179.     BX = LDT selector
  180.     ES:(E)DI -> 8-byte buffer for copy of descriptor
  181. Return: CF clear if successful
  182.         buffer filled
  183.     CF set on error
  184.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  185. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  186.     not supported by MS Windows 3.0 in Standard mode
  187. SeeAlso: AX=000Ch
  188. --------E-31000C-----------------------------
  189. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
  190.     AX = 000Ch
  191.     BX = LDT selector
  192.     ES:(E)DI -> 8-byte buffer containing descriptor
  193. Return: CF clear if successful
  194.     CF set on error
  195.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  196. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  197.     only modify descriptors allocated with INT 31/AX=0000h
  198.     DPMI 1.0+ automatically reloads any segment registers containing the
  199.       selector being modified
  200.     not supported by MS Windows 3.0 in Standard mode
  201. SeeAlso: AX=000Bh
  202. --------E-31000D-----------------------------
  203. INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
  204.     AX = 000Dh
  205.     BX = LDT selector
  206. Return: CF clear if successful
  207.         descriptor allocated
  208.     CF set on error
  209.         AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
  210. Notes:    free descriptor with INT 31/AX=0001h
  211.     the first 16 descriptors (04h-7Ch) are reserved for this function, but
  212.       some may already be in use by other applications under DPMI 0.9;
  213.       DPMI 1.0 guarantees 16 descriptors per client
  214.     not supported by MS Windows 3.0 in Standard mode
  215. SeeAlso: AX=0000h,AX=0001h
  216. --------E-31000E-----------------------------
  217. INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
  218.     AX = 000Eh
  219.     CX = number of descriptors to copy
  220.     ES:(E)DI -> descriptor buffer (see below)
  221. Return: CF clear if successful
  222.         descriptors copied
  223.     CF set on error
  224.         AX = error code (8022h) (see AX=0000h)
  225.         CX = number of descriptors successfully copied
  226. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  227.     if the function fails, the first CX descriptors are valid; the
  228.       remainder are not modified
  229. SeeAlso: AX=000Bh,AX=000Fh
  230.  
  231. Format of descriptor buffer entry (one per descriptor to get):
  232. Offset    Size    Description
  233.  00h    WORD    selector (set by client)
  234.  02h    QWORD    descriptor (set by host)
  235. --------E-31000F-----------------------------
  236. INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
  237.     AX = 000Fh
  238.     CX = number of descriptors to copy
  239.     ES:(E)DI -> descriptor buffer (see below)
  240. Return: CF clear if successful
  241.         descriptors copied
  242.     CF set on error
  243.         AX = error code (8021h,8022h,8025h) (see AX=0000h)
  244.         CX = number of descriptors successfully copied
  245. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  246.     if the function fails, the first CX descriptors are valid; the
  247.       remainder are not modified
  248.     DPMI 1.0+ automatically reloads any segment registers containing a
  249.       selector being modified
  250. SeeAlso: AX=000Ch,AX=000Eh
  251.  
  252. Format of descriptor buffer entry (one per descriptor to set):
  253. Offset    Size    Description
  254.  00h    WORD    selector
  255.  02h    QWORD    descriptor
  256. --------E-310100-----------------------------
  257. INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
  258.     AX = 0100h
  259.     BX = number of paragraphs to allocate
  260. Return: CF clear if successful
  261.         AX = real mode segment of allocated block
  262.         DX = first selector for allocated block
  263.     CF set on error
  264.         AX = DOS error code (07h,08h) (see INT 21/AH=59h)
  265.          (DPMI 1.0+) DPMI error code (8011h) (see AX=0000h)
  266.         BX = size (in paragraphs) of largest available block
  267. Notes:    multiple contiguous selectors are allocated for blocks of more than 64K
  268.       if the caller is a 16-bit program
  269.     never modify or deallocate returned descriptors
  270.     not supported by MS Windows 3.0 in Standard mode
  271. SeeAlso: AX=0101h,AX=0501h
  272. --------E-310101-----------------------------
  273. INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
  274.     AX = 0101h
  275.     DX = selector of block
  276. Return: CF set if successful
  277.     CF set on error
  278.         AX = DOS error code (07h,09h) (see INT 21/AH=59h)
  279. Notes:    all descriptors allocated for the block are automatically freed
  280.     DPMI 1.0+ automatically zeros any segment registers containing a
  281.       selector freed by this function
  282.     not supported by MS Windows 3.0 in Standard mode
  283. SeeAlso: AX=0100h,AX=0102h,AX=0502h
  284. --------E-310102-----------------------------
  285. INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
  286.     AX = 0102h
  287.     BX = new block size in paragraphs
  288.     DX = selector of block
  289. Return: CF clear if successful
  290.     CF set on error
  291.         AX = DOS error code (07h,08h,09h) (see INT 21/AH=59h)
  292.          (DPMI 1.0+) DPMI error code (8011h,8022h) (see AX=0000h)
  293.         BX = maximum block size (in paragraphs) possible
  294. Notes:    increasing the size of a block past a 64K boundary will fail if the
  295.       next descriptor in the LDT is already in use
  296.     shrinking a block past a 64K boundary will cause some selectors to be
  297.       freed; DPMI 1.0+ automatically zeros any segment registers containing
  298.       a selector freed by this function
  299.     not supported by MS Windows 3.0 in Standard mode
  300. SeeAlso: AX=0100h
  301. --------E-310200-----------------------------
  302. INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
  303.     AX = 0200h
  304.     BL = interrupt number
  305. Return: CF clear
  306.     CX:DX = segment:offset of real mode interrupt handler
  307. Note:    the DPMI implementation is required to support all 256 vectors
  308. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
  309. --------E-310201-----------------------------
  310. INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
  311.     AX = 0201h
  312.     BL = interrupt number
  313.     CX:DX = segment:offset of real mode handler
  314. Return: CF clear
  315. Note:    all memory that may be touched by a hardware interrupt handler must be
  316.       locked down with INT 31/AX=0600h
  317. SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
  318. --------E-310202-----------------------------
  319. INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
  320.     AX = 0202h
  321.     BL = exception number (00h-1Fh)
  322. Return: CF clear if successful
  323.         CX:(E)DX = selector:offset of handler
  324.     CF set on error
  325.         AX = error code (DPMI 1.0+) (8021h) (see AX=0000h)
  326. Notes:    16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
  327.     DPMI 1.0+ supports this function only for backward compatibility; use
  328.        AX=0210h or AX=0211h instead
  329.     not supported by MS Windows 3.0 in Standard mode
  330. SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
  331. --------E-310203-----------------------------
  332. INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
  333.     AX = 0203h
  334.     BL = exception number (00h-1Fh)
  335.     CX:(E)DX = selector:offset of handler
  336. Return: CF clear if successful
  337.     CF set on error
  338.         AX = error code (DPMI 1.0+) (8021h,8022h) (see AX=0000h)
  339. Notes:    32-bit programs must supply an offset in EDX and use a 32-bit interrupt
  340.       stack frame on chaining to the next exception handler
  341.     the handler should return using a FAR return
  342.     all fault stack frames contain an error code, but it is only valid for
  343.       exceptions 08h and 0Ah-0Eh
  344.     handlers will only be called if the exception occurs in protected mode,
  345.       and the DPMI host does not transparently handle the exception
  346.     the handler may change certain values on the stack frame (see below)
  347.     DPMI 1.0+ supports this function only for backward compatibility; use
  348.        AX=0212h or AX=0213h instead
  349.     not supported by MS Windows 3.0 in Standard mode
  350. SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
  351.  
  352. Format of stack frame for 16-bit programs: (offset from SS:SP)
  353. Offset    Size    Description
  354.  00h    DWORD    return CS:IP (do not change)
  355.  04h    WORD    error code
  356.  06h    DWORD    CS:IP of exception
  357.  0Ah    WORD    flags
  358.  0Ch    DWORD    SS:SP
  359.  
  360. Format of stack frame for 32-bit programs: (offset from SS:ESP)
  361. Offset    Size    Description
  362.  00h    DWORD    return EIP (do not change)
  363.  04h    WORD    return CS selector (do not change)
  364.  06h    WORD    reserved (do not change)
  365.  08h    DWORD    error code
  366.  0Ch    DWORD    EIP of exception
  367.  10h    WORD    CS selector of exception
  368.  12h    WORD    reserved (do not change)
  369.  14h    DWORD    EFLAGS
  370.  18h    DWORD    ESP
  371.  1Ch    WORD    SS
  372.  1Eh    WORD    reserved (do not change)
  373. --------E-310204-----------------------------
  374. INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
  375.     AX = 0204h
  376.     BL = interrupt number
  377. Return: CF clear
  378.     CX:(E)DX = selector:offset of handler
  379. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  380.     DPMI implementations are required to support all 256 vectors
  381.     not supported by MS Windows 3.0 in Standard mode
  382. SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2F/AX=FB42h/BX=0024h
  383. --------E-310205-----------------------------
  384. INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
  385.     AX = 0205h
  386.     BL = interrupt number
  387.     CX:(E)DX = selector:offset of handler
  388. Return: CF clear if successful
  389.     CF set on error
  390.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  391. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  392.     32-bit programs must use a 32-bit interrupt stack frame when chaining
  393.       to the next handler
  394.     DPMI implementations are required to support all 256 vectors
  395.     hardware interrupts are reflected to the virtual machine's primary
  396.       client, software interrupts to the current client
  397.     not supported by MS Windows 3.0 in Standard mode
  398. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2F/AX=FB42h/BX=0025h
  399. --------E-310210-----------------------------
  400. INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  401.     AX = 0210h
  402.     BL = exception number (00h-1Fh)
  403. Return: CF clear if successful
  404.         CX:(EDX) = selector:offset of exception handler
  405.     CF set on error
  406.         AX = error code (8021h) (see AX=0000h)
  407. Note:    DPMI host reflects exception to current client's handler
  408. SeeAlso: AX=0202h,AX=0211h,AX=0212h
  409. --------E-310211-----------------------------
  410. INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  411.     AX = 0211h
  412.     BL = exception number (00h-1Fh)
  413. Return: CF clear if successful
  414.         CX:(EDX) = selector:offset of exception handler
  415.     CF set on error
  416.         AX = error code (8021h) (see AX=0000h)
  417. Notes:    returns address of protected-mode handler for real-mode exception
  418.     DPMI host performs a switch to protected mode, reflects the exception
  419.       to the virtual machine's primary client, and returns to real mode
  420.       on the handler's completion
  421. SeeAlso: AX=0202h,AX=0210h,AX=0213h
  422. --------E-310212-----------------------------
  423. INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  424.     AX = 0212h
  425.     BL = exception or fault number (00h-1Fh)
  426.     CX:(E)DX = exception handler selector:offset
  427. Return: CF clear if successful
  428.     CF set on error
  429.         AX = error code (8021h,8022h) (see AX=0000h)
  430. Note:    DPMI host sends exception to current client's handler
  431. SeeAlso: AX=0203h,AX=0210h,AX=0213h
  432. --------E-310213-----------------------------
  433. INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  434.     AX = 0213h
  435.     BL = exception or fault number (00h-1Fh)
  436.     CX:(E)DX = exception handler selector:offset
  437. Return: CF clear if successful
  438.     CF set on error
  439.         AX = error code (8021h,8022h) (see AX=0000h)
  440. Notes:    specifies address of protected-mode handler for real-mode exception
  441.     DPMI host performs a switch to protected mode, reflects the exception
  442.       to the virtual machine's primary client, and returns to real mode
  443.       on the handler's completion
  444. SeeAlso: AX=0203h,AX=0211h,AX=0212h
  445. --------E-310300-----------------------------
  446. INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
  447.     AX = 0300h
  448.     BL = interrupt number
  449.     BH = flags
  450.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  451.            reserved, must be 0 (DPMI 1.0+)
  452.         others must be 0
  453.     CX = number of words to copy from protected mode to real mode stack
  454.     ES:(E)DI = selector:offset of real mode call structure (see below)
  455. Return: CF clear if successful
  456.         real mode call structure modified (all fields except SS:SP, CS:IP
  457.           filled with return values from real mode interrupt)
  458.     CF set on error
  459.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  460.     protected mode stack unchanged
  461. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  462.     CS:IP in the real mode call structure is ignored for this call,
  463.       instead, the indicated interrupt vector is used for the address
  464.     the flags in the call structure are pushed on the real mode stack to
  465.       form an interrupt stack frame, and the trace and interrupt flags are
  466.       clear on entry to the handler
  467.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  468.     the real mode handler must return with the stack in the same state as
  469.       it was on being called
  470. SeeAlso: AX=0302h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286"
  471. SeeAlso: INT 2F/AX=FB42h/BX=000Dh
  472.  
  473. Format of real mode call structure:
  474. Offset    Size    Description
  475.  00h    DWORD    EDI
  476.  04h    DWORD    ESI
  477.  08h    DWORD    EBP
  478.  0Ch    DWORD    reserved (00h)
  479.  10h    DWORD    EBX
  480.  14h    DWORD    EDX
  481.  18h    DWORD    ECX
  482.  1Ch    DWORD    EAX
  483.  20h    WORD    flags
  484.  22h    WORD    ES
  485.  24h    WORD    DS
  486.  26h    WORD    FS
  487.  28h    WORD    GS
  488.  2Ah    WORD    IP
  489.  2Ch    WORD    CS
  490.  2Eh    WORD    SP
  491.  30h    WORD    SS
  492. --------E-310301-----------------------------
  493. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
  494.     AX = 0301h
  495.     BH = flags
  496.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  497.            reserved, must be 0 (DPMI 1.0+)
  498.         others must be 0
  499.     CX = number of words to copy from protected mode to real mode stack
  500.     ES:DI / ES:EDI = selector:offset of real mode call structure
  501.             (see INT 31/AX=0300h)
  502. Return: CF clear if successful
  503.         real mode call structure modified (all fields except SS:SP, CS:IP
  504.           filled with return values from real mode interrupt)
  505.     CF set on error
  506.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  507.     protected mode stack unchanged
  508. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  509.     the real mode procedure must exit with a FAR return
  510.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  511.     the real mode handler must return with the stack in the same state as
  512.       it was on being called
  513. SeeAlso: AX=0300h,AX=0302h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
  514. --------E-310302-----------------------------
  515. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
  516.     AX = 0302h
  517.     BH = flags
  518.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  519.            reserved, must be 0 (DPMI 1.0+)
  520.         others must be 0
  521.     CX = number of words to copy from protected mode to real mode stack
  522.     ES:DI / ES:EDI = selector:offset of real mode call structure
  523.             (see INT 31/AX=0300h)
  524. Return: CF clear if successful
  525.         real mode call structure modified (all fields except SS:SP, CS:IP
  526.           filled with return values from real mode interrupt)
  527.     CF set on error
  528.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  529.     protected mode stack unchanged
  530. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  531.     the flags in the call structure are pushed on the real mode stack to
  532.       form an interrupt stack frame, and the trace and interrupt flags are
  533.       clear on entry to the handler
  534.     the real mode procedure must exit with an IRET
  535.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  536.     the real mode handler must return with the stack in the same state as
  537.       it was on being called
  538. SeeAlso: AX=0300h
  539. --------E-310303-----------------------------
  540. INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
  541.     AX = 0303h
  542.     DS:SI / DS:ESI = selector:offset of procedure to call
  543.     ES:DI / ES:EDI = selector:offset of real mode call structure
  544.             (see AX=0300h)
  545. Return: CF clear if successful
  546.         CX:DX = segment:offset of real mode call address
  547.     CF set on error
  548.         AX = error code (DPMI 1.0+) (8015h) (see AX=0000h)
  549. Notes:    the real mode call structure is static, causing reentrancy problems;
  550.       its contents are only valid at the time of a callback
  551.     the called procedure must modify the real mode CS:IP before returning
  552.     values are returned to real mode by modifying the real mode call struc
  553.     DPMI hosts must provide at least 16 callbacks per client
  554. SeeAlso: AX=0304h,AX=0C00h
  555.  
  556. Values callback procedure is called with:
  557.     DS:SI / DS:ESI = selector:offset of real mode SS:SP
  558.     ES:DI / ES:EDI = selector:offset of real mode call structure
  559.     SS:SP / SS:ESP = locked protected mode API stack
  560.     interrupts disabled
  561. Return: (with IRET)
  562.     ES:DI / ES:EDI = selector:offset of real mode call structure to restore
  563. --------E-310304-----------------------------
  564. INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
  565.     AX = 0304h
  566.     CX:DX = real mode callback address
  567. Return: CF clear if successful
  568.     CF set on error
  569.         AX = error code (DPMI 1.0+) (8024h) (see AX=0000h)
  570. SeeAlso: AX=0303h
  571. --------E-310305-----------------------------
  572. INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
  573.     AX = 0305h
  574. Return: CF clear
  575.     AX = size in bytes of state buffer
  576.     BX:CX = real mode address of procedure to save/restore state
  577.     SI:DI / SI:EDI = protected mode procedure to save/restore state
  578. Notes:    the buffer size will be zero if it is not necessary to preserve state
  579.     16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
  580.     this function is only needed if using the raw mode switch service
  581. SeeAlso: AX=0306h
  582.  
  583. Values to call state-save procedures with:
  584.     AL = direction
  585.         00h save state
  586.         01h restore state
  587.     ES:DI / ES:EDI -> state buffer
  588. Return: all registers preserved
  589. --------E-310306-----------------------------
  590. INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
  591.     AX = 0306h
  592. Return: CF clear
  593.     BX:CX -> procedure to switch from real to protected mode
  594.     SI:DI / SI:EDI -> procedure to switch from protected to real mode
  595. Notes:    16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
  596.     the caller must save and restore the state of the task with AX=0305h
  597.     not supported by MS Windows 3.0 in Standard mode
  598. SeeAlso: AX=0305h
  599.  
  600. Values to JUMP at mode-switch procedures with:
  601.     AX = new DS
  602.     CX = new ES
  603.     DX = new SS
  604.     BX / EBX = new SP / ESP
  605.     SI = new CS
  606.     DI / EDI = new IP / EIP
  607. Notes:    BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
  608.       DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
  609.     interrupts will stay disabled during the entire mode switch if they
  610.       are disabled on entry to the mode-switch procedure
  611. --------E-310400-----------------------------
  612. INT 31 P - DPMI 0.9+ - GET DPMI VERSION
  613.     AX = 0400h
  614. Return: CF clear
  615.     AH = major version of DPMI spec supported
  616.     AL = two-digit minor version of DPMI spec supported
  617.     BX = flags
  618.         bit 0: running under an 80386 (32-bit) implementation
  619.         bit 1: processor returns to real mode for reflected interrupts
  620.            instead of V86 mode
  621.         bit 2: virtual memory supported
  622.         bit 3: reserved (undefined)
  623.         others reserved (zero)
  624.     CL = processor type (02h=80286, 03h=80386, 04h=80486)
  625.     DH = curr value of virtual master interrupt controller base interrupt
  626.     DL = curr value of virtual slave interrupt controller base interrupt
  627. SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 67/AX=DE0Ah
  628. --------E-310401-----------------------------
  629. INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
  630.     AX = 0401h
  631.     ES:(E)DI -> 128-byte buffer for host description (see below)
  632. Return: CF clear if successful
  633.         AX = capabilities (see below)
  634.         CX = reserved (00h)
  635.         DX = reserved (00h)
  636.         buffer filled
  637.     CF set on error (DPMI 0.9 only)
  638. SeeAlso: AX=0400h
  639.  
  640. Bitfields for capabilities:
  641.  bit 0    paged accessed/dirty supported (see AX=0506h,AX=0507h)
  642.  bit 1    exceptions restartability supported
  643.  bit 2    device mapping supported (see AX=0508h)
  644.  bit 3    conventional memory mapping supported (see AX=0509h)
  645.  bit 4    demand zero-fill supported
  646.  bit 5    write-protect client capability supported
  647.  bit 6    write-protect host capability supported
  648.  bits 7-15 reserved
  649.  
  650. Format of host description:
  651. Offset    Size    Description
  652.  00h    BYTE    host major version number
  653.  01h    BYTE    host minor version number
  654.  02h 126 BYTEs    ASCIZ host vendor name
  655. --------E-310500-----------------------------
  656. INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
  657.     AX = 0500h
  658.     ES:DI / ES:EDI -> buffer for memory information (see below)
  659. Return: CF clear
  660. Notes:    16-bit programs use ES:DI, 32-bit programs use ES:EDI
  661.     this function must be considered advisory because other applications
  662.       may affect the results at any time after the call
  663.     fields not supported by the DPMI implementation are filled with
  664.       FFFFFFFFh
  665.     DPMI 1.0+ supports this function solely for backward compatibility; use
  666.       AX=050Bh instead
  667. SeeAlso: AX=0501h,AX=0604h
  668.  
  669. Format of memory information:
  670. Offset    Size    Description
  671.  00h    DWORD    largest available block in bytes
  672.  04h    DWORD    maximum unlocked page allocation
  673.  08h    DWORD    maximum locked page allocation
  674.  0Ch    DWORD    total linear address space in pages
  675.  10h    DWORD    total unlocked pages
  676.  14h    DWORD    free pages
  677.  18h    DWORD    total physical pages
  678.  1Ch    DWORD    free linear address space in pages
  679.  20h    DWORD    size of paging file/partition in pages
  680.  24h 12 BYTEs    reserved
  681. --------E-310501-----------------------------
  682. INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
  683.     AX = 0501h
  684.     BX:CX = size in bytes
  685. Return: CF clear if successful
  686.         BX:CX = linear address of block
  687.         SI:DI = memory block handle for resizing and freeing block
  688.     CF set on error
  689.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see AX=0000h)
  690. Notes:    no selectors are allocated
  691.     the memory block is allocated unlocked (can be locked with AX=0600h)
  692.     allocations are often page granular (see AX=0604h)
  693. SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
  694. SeeAlso: INT 2F/AX=FB42h/BX=0002h
  695. --------E-310502-----------------------------
  696. INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
  697.     AX = 0502h
  698.     SI:DI = handle of memory block
  699. Return: CF clear if successful
  700.     CF set on error
  701.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  702. Note:    any selectors allocated for the memory block must also be freed,
  703.       preferably before freeing the memory block
  704. SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
  705. --------E-310503-----------------------------
  706. INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
  707.     AX = 0503h
  708.     BX:CX = new size in bytes (nonzero)
  709.     SI:DI = handle of memory block
  710. Return: CF clear if successful
  711.         BX:CX = new linear address
  712.         SI:DI = new handle of memory block
  713.     CF set on error
  714.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
  715.         (see AX=0000h)
  716. Notes:    any selectors pointing at the block must be updated
  717.     the previous memory block handle becomes invalid
  718.     an error is returned if the new size is 0
  719. SeeAlso: AX=0102h,AX=0501h,AX=0505h
  720. --------E-310504-----------------------------
  721. INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
  722.     AX = 0504h
  723.     EBX = page-aligned linear address of memory block (00000000h if any
  724.         address is acceptable)
  725.     ECX = size in bytes (nonzero)
  726.     EDX = flags
  727.         bit 0: set to create committed pages instead of uncommitted pages
  728.         bits 1-31 reserved (0)
  729. Return: CF clear if successful
  730.         EBX = linear address of memory block
  731.         ESI = memory block handle
  732.     CF set on error
  733.         AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see AX=0000h)
  734. Note:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  735. SeeAlso: AX=0501h,AX=0505h
  736. --------E-310505-----------------------------
  737. INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
  738.     AX = 0505h
  739.     ESI = memory block handle
  740.     ECX = new size in bytes (nonzero)
  741.     EDX = flags
  742.         bit 0: create committed pages rather than uncommitted pages
  743.         bit 1: segment descriptor update required
  744.         ES:EBX -> buffer containing array of WORDs with selectors
  745.         EDI = number of selectors in array
  746.         bits 2-31 reserved (0)
  747. Return: CF clear if successful
  748.         EBX = new linear base address
  749.         ESI = new memory block handle
  750.     CF set on error
  751.         AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see AX=0000h)
  752. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  753.     the old memory block handle becomes invalid
  754.     if EDX bit 1 set and the block's base address is changed, DPMI updates
  755.       all descriptors for selectors in the update buffer which fall within
  756.       the memory block
  757. SeeAlso: AX=0503h,AX=0504h
  758. --------E-310506-----------------------------
  759. INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
  760.     AX = 0506h
  761.     ESI = memory block handle
  762.     EBX = offset in memory block of first page
  763.     ECX = number of pages
  764.     ES:EDX -> array of WORDs to hold page attributes (see below)
  765. Return: CF clear if successful
  766.         buffer filled
  767.     CF set on error
  768.         AX = error code (8001h,8023h,8025h) (see AX=0000h)
  769. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  770.     if EBX is not page-aligned, it will be rounded down
  771. SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
  772.  
  773. Format of page attribute words:
  774.  bits 0-2    page type
  775.         000 uncommitted
  776.         001 committed
  777.         010 mapped (see AX=0508h,AX=0509h)
  778.         other currently unused
  779.  bit 3        page is read/write rather than read-only
  780.  bit 4        accessed/dirty bits supplied in bits 5 and 6
  781.  bit 5        page has been accessed (only valid if bit 4 set)
  782.  bit 6        page has been written (only valid if bit 4 set)
  783.  bits 7-15    reserved (0)
  784. --------E-310507-----------------------------
  785. INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
  786.     AX = 0507h
  787.     ESI = memory block handle
  788.     EBX = offset in memory block of first page
  789.     ECX = number of pages
  790.     ES:EDX -> array of WORDs with new page attributes (see AX=0506h)
  791. Return: CF clear if successful
  792.     CF set on error
  793.         AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
  794.         (see AX=0000h)
  795.         ECX = number of pages which have been set
  796. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  797.     if EBX is not page-aligned, it will be rounded down
  798. SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
  799. --------E-310508-----------------------------
  800. INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
  801.     AX = 0508h
  802.     ESI = memory block handle
  803.     EBX = page-aligned offset within memory block of page(s) to be mapped
  804.     ECX = number of pages to map
  805.     EDX = page-aligned physical address of device
  806. Return: CF clear if successful
  807.     CF set on error
  808.         AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
  809. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  810.     support of this function is optional; hosts are also allowed to support
  811.       the function for some devices but not others
  812. SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
  813. --------E-310509-----------------------------
  814. INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
  815.     AX = 0509h
  816.     ESI = memory block handle
  817.     EBX = page-aligned offset within memory block of page(s) to map
  818.     ECX = number of pages to map
  819.     EDX = page-aligned linear address of conventional (below 1M) memory
  820. Return: CF clear if successful
  821.     CF set on error
  822.         AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
  823. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  824.     support of this function is optional
  825. SeeAlso: AX=0504h,AX=0508h,AX=0801h
  826. --------E-31050A-----------------------------
  827. INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
  828.     AX = 050AH
  829.     SI:DI = memory block handle
  830. Return: CF clear if successful
  831.         SI:DI = size in bytes
  832.         BX:CX = base address
  833.     CF set on error
  834.         AX = error code (8023h) (see AX=0000h)
  835. SeeAlso: AX=0501h,AX=0504h
  836. --------E-31050B-----------------------------
  837. INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
  838.     AX = 050Bh
  839.     ES:(E)DI -> 128-byte buffer for memory information (see below)
  840. Return: CF clear if successful
  841.     CF set on error (DPMI 0.9 only)
  842. Note:    16-bit programs use ES:DI, 32-bit programs must use ES:EDI
  843. SeeAlso: AX=0500h
  844.  
  845. Format of memory information:
  846. Offset    Size    Description
  847.  00h    DWORD    total allocated bytes of physical memory controlled by host
  848.  04h    DWORD    total allocated bytes of virtual memory controlled by host
  849.  08h    DWORD    total available bytes of virtual memory controlled by host
  850.  0Ch    DWORD    total allocated bytes of virtual memory for curr virtual mach
  851.  10h    DWORD    total available bytes of virtual memory for curr virtual mach
  852.  14h    DWORD    total allocated bytes of virtual memory for current client
  853.  18h    DWORD    total available bytes of virtual memory for current client
  854.  1Ch    DWORD    total locked bytes for current client
  855.  20h    DWORD    maximum locked bytes for current client
  856.  24h    DWORD    highest linear address available to current client
  857.  28h    DWORD    largest available memory block in bytes
  858.  2Ch    DWORD    minimum allocation unit in bytes
  859.  30h    DWORD    allocation alignment unit size in bytes
  860.  34h 76 BYTEs    reserved (00h)
  861. --------E-310600-----------------------------
  862. INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
  863.     AX = 0600h
  864.     BX:CX = starting linear address
  865.     SI:DI = size of region in bytes
  866. Return: CF clear if successful
  867.     CF set on error
  868.         none of the memory is locked
  869.         AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see AX=0000h)
  870. Notes:    pages at beginning and end will be locked if the region overlaps them
  871.     may be called multiple times for a given page; the DPMI host keeps a
  872.       lock count for each page
  873. SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
  874. --------E-310601-----------------------------
  875. INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
  876.     AX = 0601h
  877.     BX:CX = starting linear address
  878.     SI:DI = size of region in bytes
  879. Return: CF clear if successful
  880.     CF set on error
  881.         none of the memory is unlocked
  882.         AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
  883. Notes:    pages at beginning and end will be unlocked if the region overlaps them
  884.     memory whose lock count has not reached zero remains locked
  885. SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
  886. --------E-310602-----------------------------
  887. INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
  888.     AX = 0602h
  889.     BX:CX = starting linear address
  890.     SI:DI = size of region in bytes
  891. Return: CF clear if successful
  892.     CF set on error
  893.         none of the memory is made pageable
  894.         AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
  895. Notes:    must relock all unlocked real mode memory before terminating process
  896.       for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
  897.     pages at beginning and end will be unlocked if the region overlaps them
  898.     pageability of real mode pages is binary, not a count
  899. SeeAlso: AX=0600h,AX=0603h
  900. --------E-310603-----------------------------
  901. INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
  902.     AX = 0603h
  903.     BX:CX = starting linear address
  904.     SI:DI = size of region in bytes
  905. Return: CF clear if successful
  906.     CF set on error
  907.         none of the memory is relocked
  908.         AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see AX=0000h)
  909. Notes:    pages at beginning and end will be relocked if the region overlaps them
  910.     pageability of real mode pages is binary, not a count
  911. SeeAlso: AX=0602h
  912. --------E-310604-----------------------------
  913. INT 31 P - DPMI 0.9+ - GET PAGE SIZE
  914.     AX = 0604h
  915. Return: CF clear if successful
  916.         BX:CX = page size in bytes
  917.     CF set on error
  918.         AX = error code (DPMI 1.0+)
  919.         8001h unsupported, 16-bit host
  920. --------E-310700-----------------------------
  921. INT 31 P - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
  922.     AX = 0700h
  923.     BX:CX = starting linear page number
  924.     SI:DI = number of pages to mark as paging candidates
  925. Return: ???
  926. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  927.       specification, this function is called by MS Windows TASKMAN,
  928.       PROGMAN, and KERNEL
  929. SeeAlso: AX=0701h,AX=0702h
  930. --------E-310701-----------------------------
  931. INT 31 P - DPMI 0.9+ - DISCARD PAGES
  932.     AX = 0701h
  933.     BX:CX = starting linear page number
  934.     SI:DI = number of pages to discard
  935. Return: ???
  936. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  937.       specification, this function is called by MS Windows TASKMAN,
  938.       PROGMAN, and KERNEL
  939. SeeAlso: AX=0700h,AX=0703h
  940. --------E-310702-----------------------------
  941. INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
  942.     AX = 0702h
  943.     BX:CX = starting linear address
  944.     SI:DI = number of bytes to mark as paging candidates
  945. Return: CF clear if successful
  946.     CF set on error
  947.         AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
  948. Notes:    this function is advisory, and does not force immediate paging
  949.     partial pages will not be discarded
  950. SeeAlso: AX=0700h,AX=0703h
  951. --------E-310703-----------------------------
  952. INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
  953.     AX = 0703h
  954.     BX:CX = starting linear address
  955.     SI:DI = number of bytes to mark as discarded
  956. Return: CF clear if successful
  957.     CF set on error
  958.         AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
  959. Notes:    this function is advisory, and may be ignored by DPMI implementations
  960.     partial pages will not be discarded
  961. SeeAlso: AX=0701h,AX=0702h
  962. --------E-310800-----------------------------
  963. INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
  964.     AX = 0800h
  965.     BX:CX = physical address (should be above 1 MB)
  966.     SI:DI = size in bytes
  967. Return: CF clear if successful
  968.         BX:CX = linear address which maps the requested physical memory
  969.     CF set on error
  970.         AX = error code (DPMI 1.0+) (8003h,8021h) (see AX=0000h)
  971. Notes:    implementations may refuse this call because it can circumvent protects
  972.     the caller must build an appropriate selector for the memory
  973.     do not use for memory mapped in the first megabyte
  974. SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
  975. --------E-310801-----------------------------
  976. INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
  977.     AX = 0801h
  978.     BX:CX = linear address returned by AX=0800h
  979. Return: CF clear if successful
  980.     CF set on error
  981.         AX = error code (8025h) (see AX=0000h)
  982. Note:    should be called at end of access to device mapped with AX=0800h
  983. SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
  984. --------E-310900-----------------------------
  985. INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
  986.     AX = 0900h
  987. Return: CF clear
  988.     virtual interrupts disabled
  989.     AL = 00h if previously disabled
  990.        = 01h if previously enabled
  991.     AH preserved
  992. Notes:    the previous state may be restored simply by executing another INT 31
  993.     a CLI instruction may be used if the previous state is unimportant,
  994.       but should be assumed to be very slow due to trapping by the host
  995. SeeAlso: AX=0901h,AX=0902h
  996. --------E-310901-----------------------------
  997. INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
  998.     AX = 0901h
  999. Return: CF clear
  1000.     virtual interrupts enabled
  1001.     AL = 00h if previously disabled
  1002.        = 01h if previously enabled
  1003.     AH preserved
  1004. Notes:    the previous state may be restored simply by executing another INT 31
  1005.     a STI instruction may be used if the previous state is unimportant,
  1006.       but should be assumed to be very slow due to trapping by the host
  1007. SeeAlso: AX=0900h,AX=0902h
  1008. --------E-310902-----------------------------
  1009. INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
  1010.     AX = 0902h
  1011. Return: CF clear
  1012.     AL = 00h if disabled
  1013.        = 01h if enabled
  1014. Note:    should be used rather than PUSHF because that instruction yields the
  1015.       physical interrupt state rather than the per-client virtualized
  1016.       interrupt flag
  1017. SeeAlso: AX=0900h,AX=0901h
  1018. --------E-310A00-----------------------------
  1019. INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
  1020.     AX = 0A00h
  1021.     DS:SI / DS:ESI -> case-sensitive ASCIZ vendor name or identifier
  1022. Return: CF clear if successful
  1023.         ES:DI / ES:EDI -> FAR extended API entry point
  1024.         DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
  1025.     CF set on error
  1026.         AX = error code (DPMI 1.0+) (8001h) (see AX=0000h)
  1027. Notes:    extended API parameters are vendor-specific
  1028.     DPMI 1.0+ supports this function solely for backward compatibility; use
  1029.       INT 2F/AX=168Ah instead
  1030. SeeAlso: INT 2F/AX=168Ah
  1031. --------E-310B00-----------------------------
  1032. INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
  1033.     AX = 0B00h
  1034.     BX:CX = linear address
  1035.     DL = size (1,2,4 bytes)
  1036.     DH = type (00h execute, 01h write, 02h read/write)
  1037. Return: CF clear if successful
  1038.         BX = watchpoint handle
  1039.     CF set on error
  1040.         AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see AX=0000h)
  1041. SeeAlso: AX=0212h,AX=0601h
  1042. --------E-310B01-----------------------------
  1043. INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
  1044.     AX = 0B01h
  1045.     BX = watchpoint handle
  1046. Return: CF clear if successful
  1047.     CF set on error
  1048.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  1049. Note:    the watchpoint handle is freed
  1050. SeeAlso: AX=0B00h
  1051. --------E-310B02-----------------------------
  1052. INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
  1053.     AX = 0B02h
  1054.     BX = watchpoint handle
  1055. Return: CF clear if successful
  1056.         AX = status flags
  1057.         bit 0: watch point has been executed since AX=0B00h or AX=0B03h
  1058.     CF set on error
  1059.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  1060. SeeAlso: AX=0B00h,AX=0B03h
  1061. --------E-310B03-----------------------------
  1062. INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
  1063.     AX = 0B03h
  1064.     BX = watchpoint handle
  1065. Return: CF clear if successful
  1066.     CF set on error
  1067.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  1068. SeeAlso: AX=0B02h
  1069. --------E-310C00-----------------------------
  1070. INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
  1071.     AX = 0C00h
  1072.     ES:(E)DI -> resident service provider structure (see below)
  1073. Return: CF clear if successful
  1074.     CF set on error
  1075.         AX = error code (8015h,8021h,8025h) (see AX=0000h)
  1076. Note:    calling this function declares an intent to provide resident
  1077.       protected mode services after terminating with AX=0C01h
  1078. SeeAlso: AX=0303h,AX=0C01h
  1079.  
  1080. Format of resident service provider structure:
  1081. Offset    Size    Description
  1082.  00h    QWORD    descriptor for 16-bit data segment
  1083.  08h    QWORD    descriptor for 16-bit code segment (zeros if not supported)
  1084.  10h    WORD    offset of 16-bit callback procedure
  1085.  12h  2 BYTEs    reserved
  1086.  14h    QWORD    descriptor for 32-bit data segment
  1087.  1Ch    QWORD    descriptor for 32-bit code segment (zeros if not supported)
  1088.  24h    DWORD    offset of 32-bit callback procedure
  1089. --------E-310C01-----------------------------
  1090. INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
  1091.     AX = 0C01h
  1092.     BL = return code
  1093.     DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
  1094. Return: never
  1095. Notes:    should only be used if the program will only provide services to
  1096.       other DPMI programs
  1097.     any protected mode memory remains allocated to the program unless
  1098.       explicitly freed before this call
  1099.     must first call AX=0C00h or program will simply be terminated
  1100. SeeAlso: AX=0C00h,INT 21/AH=31h
  1101. --------E-310D00-----------------------------
  1102. INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
  1103.     AX = 0D00h
  1104.     ES:(E)DI -> shared memory allocation request structure (see below)
  1105. Return: CF clear if successful
  1106.         request structure updated
  1107.     CF set on error
  1108.         AX = error code (8012h,8013h,8014h,8016h,8021h) (see AX=0000h)
  1109. Note:    first 16 bytes of memory block will be initialized to zeros on the
  1110.       first allocation
  1111. SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
  1112.  
  1113. Format of shared memory allocation request structure:
  1114. Offset    Size    Description
  1115.  00h    DWORD    requested length of shared memory block in bytes
  1116.  04h    DWORD    (return) allocated length of block
  1117.  08h    DWORD    (return) shared memory handle
  1118.  0Ch    DWORD    (return) linear address of memory block
  1119.  10h  6 BYTEs    selector:offset32 of ASCIZ name for memory block
  1120.         (name max 128 bytes)
  1121.  16h  2 BYTEs    reserved
  1122.  18h  4 BYTEs    reserved (00h)
  1123. --------E-310D01-----------------------------
  1124. INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
  1125.     AX = 0D01h
  1126.     SI:DI = shared memory block handle
  1127. Return: CF clear if successful
  1128.     CF set on error
  1129.         AX = error code (8023h) (see AX=0000h)
  1130. Notes:    handle becomes invalid after this call
  1131.     DPMI maintains separate global and virtual machine use counts for each
  1132.       shared memory block; when the global use counts reaches zero, the
  1133.       block is finally destroyed
  1134. SeeAlso: AX=0502h,AX=0D00h
  1135. --------E-310D02-----------------------------
  1136. INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
  1137.     AX = 0D02h
  1138.     SI:DI = shared memory block handle
  1139.     DX = flags
  1140.         bit 0: return immediately rather than suspending if serialization
  1141.             unavailable
  1142.         bit 1: shared rather than exclusive serialization
  1143.         bits 2-15 reserved (0)
  1144. Return: CF clear if successful
  1145.     CF set on error
  1146.         AX = error code (8004h,8005h,8017h-8019h,8023h) (see AX=0000h)
  1147. Notes:    an exclusive serialization blocks any other serialization attempts for
  1148.       the same block by another virtual machine; a shared serialization
  1149.       blocks attempts at exclusive serialization by another virtual machine
  1150.     hosts are not required to detect deadlock
  1151.     a client's interrupt handler can cancel a serialization call which
  1152.       caused it to block by calling AX=0D03h
  1153. SeeAlso: AX=0D00h,AX=0D03h
  1154. --------E-310D03-----------------------------
  1155. INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
  1156.     AX = 0D03h
  1157.     SI:DI = shared memory block handle
  1158.     DX = flags
  1159.         bit 0: release shared serialization rather than exclusive serialztn
  1160.         bit 1: free pending serialization
  1161.         bits 2-15 reserved (0)
  1162. Return: CF clear if successful
  1163.     CF set on error
  1164.         AX = error code (8002h,8023h) (see AX=0000h)
  1165. SeeAlso: AX=0D00h,AX=0D02h
  1166. --------E-310E00-----------------------------
  1167. INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
  1168.     AX = 0E00h
  1169. Return: CF clear
  1170.     AX = coprocessor status
  1171.         bit 0: numeric coprocessor enabled for current client
  1172.         bit 1: client is emulating coprocessor
  1173.         bit 2: numeric coprocessor is present
  1174.         bit 3: host is emulating coprocessor instructions
  1175.         bits 4-7: coprocessor type
  1176.         0000 none
  1177.         0010 80287
  1178.         0011 80387
  1179.         0100 80486 with numeric coprocessor
  1180.         other reserved
  1181.         bits 8-15 not used
  1182. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1183. SeeAlso: AX=0E01h
  1184. --------E-310E01-----------------------------
  1185. INT 31 P - DPMI 1.0+ - SET EMULATION
  1186.     AX = 0E01h
  1187.     BX = coprocessor flag bits
  1188.         bit 0: enable numeric coprocessor for current client
  1189.         bit 1: client will emulate coprocessor
  1190.         bits 2-15 not used
  1191. Return: CF clear if successful
  1192.     CF set on error
  1193.         AX = error code (8026h) (see AX=0000h)
  1194. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1195. SeeAlso: AX=0E00h
  1196. ----------3157-------------------------------
  1197. INT 31 - Netroom3 DPMI.EXE v3.00 - ???
  1198.     AH = 57h
  1199.     AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
  1200.     ???
  1201. Return: ???
  1202. SeeAlso: INT 2C/AX=0000h"RM386"
  1203. ----------315702-----------------------------
  1204. INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
  1205.     AX = 5702h
  1206.     DX = PSP segment of caller
  1207.     STACK: WORD    ???
  1208.            WORD    flags (bit 0 set if 32-bit program)
  1209. Return: as for DPMI mode-switch entry point (see INT 2F/AX=1687h)
  1210. Note:    this function is called by the real-mode DPMI mode-switch entry point
  1211. SeeAlso: INT 2F/AX=1687h
  1212. --------v-32---------------------------------
  1213. INT 32 - VIRUS - reportedly used by "Tiny" Viruses
  1214. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
  1215. --------v-32---------------------------------
  1216. INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
  1217. SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
  1218. --------M-330000-----------------------------
  1219. INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
  1220.     AX = 0000h
  1221. Return: AX = status
  1222.         0000h hardware/driver not installed
  1223.         FFFFh hardware/driver installed
  1224.     BX = number of buttons
  1225.         0000h other than two
  1226.         0002h two buttons (many drivers)
  1227.         0003h Mouse Systems/Logitech three-button mouse
  1228.         FFFFh two buttons
  1229. Notes:    to use mouse on a Hercules-compatible monographics card in graphics
  1230.       mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
  1231.       and then call this function.    Logitech drivers v5.01 and v6.00
  1232.       reportedly do not correctly use Hercules graphics in dual-monitor
  1233.       systems, while version 4.10 does.
  1234.     the Logitech mouse driver contains the signature string "LOGITECH"
  1235.       three bytes past the interrupt handler; many of the Logitech mouse
  1236.       utilities check for this signature.
  1237. SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
  1238. --------M-330001-----------------------------
  1239. INT 33 - MS MOUSE - SHOW MOUSE CURSOR
  1240.     AX = 0001h
  1241. SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh
  1242. --------M-330002-----------------------------
  1243. INT 33 - MS MOUSE - HIDE MOUSE CURSOR
  1244.     AX = 0002h
  1245. Note:    multiple calls to hide the cursor will require multiple calls to
  1246.       function 01h to unhide it.
  1247. SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
  1248. --------M-330003-----------------------------
  1249. INT 33 - MS MOUSE - RETURN POSITION AND BUTTON STATUS
  1250.     AX = 0003h
  1251. Return: BX = button status
  1252.        bit 0  left button pressed if 1
  1253.        bit 1  right button pressed if 1
  1254.        bit 2  middle button pressed if 1 (Mouse Systems/Logitech mouse)
  1255.     CX = column
  1256.     DX = row
  1257. SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
  1258. --------M-330004-----------------------------
  1259. INT 33 - MS MOUSE - POSITION MOUSE CURSOR
  1260.     AX = 0004h
  1261.     CX = column
  1262.     DX = row
  1263. Note:    the row and column are truncated to the next lower multiple of the cell
  1264.       size; however, some versions of the Microsoft documentation
  1265.       incorrectly state that the coordinates are rounded
  1266. SeeAlso: AX=0003h,INT 62/AX=0081h
  1267. --------M-330005-----------------------------
  1268. INT 33 - MS MOUSE - RETURN BUTTON PRESS DATA
  1269.     AX = 0005h
  1270.     BX = button
  1271.         0000h left
  1272.         0001h right
  1273.         0002h middle (Mouse Systems/Logitech mouse)
  1274. Return: AX = button states
  1275.         bit 0 left button pressed if 1
  1276.         bit 1 right button pressed if 1
  1277.         bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
  1278.     BX = number of times specified button has been pressed since last call
  1279.     CX = column at time specified button was last pressed
  1280.     DX = row at time specified button was last pressed
  1281. SeeAlso: AX=0006h,INT 62/AX=007Ch
  1282. --------M-330006-----------------------------
  1283. INT 33 - MS MOUSE - RETURN BUTTON RELEASE DATA
  1284.     AX = 0006h
  1285.     BX = button
  1286.         0000h left
  1287.         0001h right
  1288.         0002h middle (Mouse Systems/Logitech mouse)
  1289. Return: AX = button states
  1290.         bit 0 left button pressed if 1
  1291.         bit 1 right button pressed if 1
  1292.         bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
  1293.     BX = number of times specified button has been released since last call
  1294.     CX = column at time specified button was last released
  1295.     DX = row at time specified button was last released
  1296. SeeAlso: AX=0005h,INT 62/AX=007Ch
  1297. --------M-330007-----------------------------
  1298. INT 33 - MS MOUSE - DEFINE HORIZONTAL CURSOR RANGE
  1299.     AX = 0007h
  1300.     CX = minimum column
  1301.     DX = maximum column
  1302. SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1303. --------M-330008-----------------------------
  1304. INT 33 - MS MOUSE - DEFINE VERTICAL CURSOR RANGE
  1305.     AX = 0008h
  1306.     CX = minimum row
  1307.     DX = maximum row
  1308. SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1309. --------M-330009-----------------------------
  1310. INT 33 - MS MOUSE - DEFINE GRAPHICS CURSOR
  1311.     AX = 0009h
  1312.     BX = column of cursor hot spot in bitmap (-16 to 16)
  1313.     CX = row of cursor hot spot (-16 to 16)
  1314.     ES:DX -> bitmap
  1315.         16 words screen mask
  1316.         16 words cursor mask
  1317.             each word defines the sixteen pixels of a row, low bit
  1318.             rightmost
  1319. SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh
  1320. --------M-33000A-----------------------------
  1321. INT 33 - MS MOUSE - DEFINE TEXT CURSOR
  1322.     AX = 000Ah
  1323.     BX = hardware/software text cursor
  1324.         0000h software
  1325.         CX = screen mask
  1326.         DX = cursor mask
  1327.         0001h hardware
  1328.         CX = start scan line
  1329.         DX = end scan line
  1330. Note:    when the software cursor is selected, the char/attribute data at the
  1331.       current screen position is ANDed with the screen mask and then XORed
  1332.       with the cursor mask
  1333. SeeAlso: AX=0009h,INT 62/AX=007Eh
  1334. --------M-33000B-----------------------------
  1335. INT 33 - MS MOUSE - READ MOTION COUNTERS
  1336.     AX = 000Bh
  1337. Return: CX = number of mickeys mouse moved horizontally since last call
  1338.     DX = number of mickeys mouse moved vertically
  1339. Notes:    a mickey is the smallest increment the mouse can sense
  1340.     positive values indicate down/right
  1341. SeeAlso: AX=0003h,AX=001Bh,AX=0027h
  1342. --------M-33000C-----------------------------
  1343. INT 33 - MS MOUSE - DEFINE INTERRUPT SUBROUTINE PARAMETERS
  1344.     AX = 000Ch
  1345.     CX = call mask
  1346.          bit 0 call if mouse moves
  1347.          bit 1 call if left button pressed
  1348.          bit 2 call if left button released
  1349.          bit 3 call if right button pressed
  1350.          bit 4 call if right button released
  1351.          bit 5 call if middle button pressed (Mouse Systems/Logitech mouse)
  1352.          bit 6 call if middle button released (Mouse Sys/Logitech mouse)
  1353.     ES:DX -> FAR routine
  1354. Notes:    when the subroutine is called, it is passed the following values:
  1355.       AX = condition mask (same bit assignments as call mask)
  1356.       BX = button state
  1357.       CX = cursor column
  1358.       DX = cursor row
  1359.       SI = horizontal mickey count
  1360.       DI = vertical mickey count
  1361.     some versions of the Microsoft documentation incorrectly state that CX
  1362.       bit 0 means call if mouse cursor moves, and swap the meanings of SI
  1363.       and DI
  1364. SeeAlso: AX=0018h
  1365. --------M-33000D-----------------------------
  1366. INT 33 - MS MOUSE - LIGHT PEN EMULATION ON
  1367.     AX = 000Dh
  1368. SeeAlso: AX=000Eh,INT 10/AH=04h
  1369. --------M-33000E-----------------------------
  1370. INT 33 - MS MOUSE - LIGHT PEN EMULATION OFF
  1371.     AX = 000Eh
  1372. SeeAlso: AX=000Dh
  1373. --------M-33000F-----------------------------
  1374. INT 33 - MS MOUSE - DEFINE MICKEY/PIXEL RATIO
  1375.     AX = 000Fh
  1376.     CX = number of mickeys per 8 pixels horizontally (default 8)
  1377.     DX = number of mickeys per 8 pixels vertically (default 16)
  1378. SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
  1379. --------M-330010-----------------------------
  1380. INT 33 - MS MOUSE - DEFINE SCREEN REGION FOR UPDATING
  1381.     AX = 0010h
  1382.     CX,DX = X,Y coordinates of upper left corner
  1383.     SI,DI = X,Y coordinates of lower right corner
  1384. Note:    mouse cursor is hidden in the specified region, and needs to be
  1385.       explicitly turned on again
  1386. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
  1387. --------M-330010-----------------------------
  1388. INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
  1389.     AX = 0010h
  1390.     ES:DX -> update region list (see below)
  1391. Notes:    mouse cursor is hidden in the specified region, and needs to be
  1392.       explicitly turned on again
  1393.     this version of the call is described in an August 1988 version of the
  1394.       Genius Mouse programmer's reference; it has been changed to conform
  1395.       to the Microsoft version shown above by version 9.06 (and possibly
  1396.       earlier versions)
  1397. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
  1398.  
  1399. Format of update region list:
  1400. Offset    Size    Description
  1401.  00h    WORD    left-most column
  1402.  02h    WORD    top-most row
  1403.  04h    WORD    right-most column
  1404.  06h    WORD    bottom-most row
  1405. --------M-330011-----------------------------
  1406. INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
  1407.     AX = 0011h
  1408. Return: AX = FFFFh
  1409.     BX = number of buttons
  1410. SeeAlso: AX=0000h
  1411. --------M-330012-----------------------------
  1412. INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
  1413.     AX = 0012h
  1414.     BH = cursor width in words
  1415.     CH = rows in cursor
  1416.     BL = horizontal hot spot (-16 to 16)
  1417.     CL = vertical hot spot (-16 to 16)
  1418.     ES:DX -> bit map of screen and cursor maps
  1419. Return: AX = FFFFh if successful
  1420. SeeAlso: AX=0009h,AX=002Ah,AX=0035h
  1421. --------M-330013-----------------------------
  1422. INT 33 - MS MOUSE - DEFINE DOUBLE-SPEED THRESHOLD
  1423.     AX = 0013h
  1424.     DX = threshold speed in mickeys/second, 0000h = default of 64/second
  1425. Note:    if speed exceeds threshold, the cursor's on-screen motion is doubled
  1426. SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
  1427. --------M-330014-----------------------------
  1428. INT 33 - MS MOUSE - EXCHANGE INTERRUPT SUBROUTINES
  1429.     AX = 0014h
  1430.     CX = call mask (see AX=000Ch)
  1431.     ES:DX -> FAR routine
  1432. Return: CX = call mask of previous interrupt routine
  1433.     ES:DX = FAR address of previous interrupt routine
  1434. SeeAlso: AX=000Ch,AX=0018h
  1435. --------M-330015-----------------------------
  1436. INT 33 - MS MOUSE - RETURN DRIVER STORAGE REQUIREMENTS
  1437.     AX = 0015h
  1438. Return: BX = size of buffer needed to store driver state
  1439. SeeAlso: AX=0016h,AX=0017h,AX=0042h
  1440. --------M-330016-----------------------------
  1441. INT 33 - MS MOUSE - SAVE DRIVER STATE
  1442.     AX = 0016h
  1443.     BX = size of buffer (see AX=0015h)
  1444.     ES:DX -> buffer for driver state
  1445. Note:    although not documented, many drivers appear to require BX on input
  1446. SeeAlso: AX=0015h,AX=0017h
  1447. --------M-330017-----------------------------
  1448. INT 33 - MS MOUSE - RESTORE DRIVER STATE
  1449.     AX = 0017h
  1450.     BX = size of buffer (see AX=0015h)
  1451.     ES:DX -> buffer containing saved state
  1452. Notes:    although not documented, many drivers appear to require BX on input
  1453.     some mouse drivers range-check the values in the saved state based on
  1454.       the current video mode; thus, the video mode should be restored
  1455.       before the mouse driver's state is restored
  1456. SeeAlso: AX=0015h,AX=0016h
  1457. --------M-330018-----------------------------
  1458. INT 33 - MS MOUSE - SET ALTERNATE MOUSE USER HANDLER
  1459.     AX = 0018h
  1460.     CX = call mask (see below)
  1461.     ES:DX -> FAR routine
  1462. Return: AX = 0018h if successful
  1463.        = FFFFh on error
  1464. Notes:    when the subroutine is called, it is passed the following values:
  1465.       AX = condition mask (same bit assignments as call mask)
  1466.       BX = button state
  1467.       CX = cursor column
  1468.       DX = cursor row
  1469.       SI = horizontal mickey count
  1470.       DI = vertical mickey count
  1471.     up to three handlers can be defined by separate calls to this function
  1472.     some versions of the documentation erroneously reverse the order of
  1473.       the bits in the call mask
  1474. SeeAlso: AX=000Ch,AX=0014h,AX=0019h
  1475.  
  1476. Bitfields for call mask:
  1477.  bit 0    call if mouse moves
  1478.  bit 1    call if left button pressed
  1479.  bit 2    call if left button released
  1480.  bit 3    call if right button pressed
  1481.  bit 4    call if right button released
  1482.  bit 5    call if shift button pressed during event
  1483.  bit 6    call if ctrl key pressed during event
  1484.  bit 7    call if alt key pressed during event
  1485. --------M-330019-----------------------------
  1486. INT 33 - MS MOUSE - RETURN USER ALTERNATE INTERRUPT VECTOR
  1487.     AX = 0019h
  1488.     CX = call mask (see AX=0018h)
  1489. Return: BX:DX = user interrupt vector
  1490.     CX = call mask (0000h if not found)
  1491. Note:    attempts to find a user event handler (defined by function 18h)
  1492.       whose call mask matches CX
  1493. SeeAlso: AX=0018h
  1494. --------M-33001A-----------------------------
  1495. INT 33 - MS MOUSE - SET MOUSE SENSITIVITY
  1496.     AX = 001Ah
  1497.     BX = horizontal speed \
  1498.     CX = vertical speed   / (see AX=000Fh)
  1499.     DX = double speed threshold (see AX=0013h)
  1500. SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
  1501. --------M-33001B-----------------------------
  1502. INT 33 - MS MOUSE - RETURN MOUSE SENSITIVITY
  1503.     AX = 001Bh
  1504. Return: BX = horizontal speed
  1505.     CX = vertical speed
  1506.     DX = double speed threshold
  1507. SeeAlso: AX=000Bh,AX=001Ah
  1508. --------M-33001C-----------------------------
  1509. INT 33 - MS MOUSE - SET INTERRUPT RATE
  1510.     AX = 001Ch
  1511.     BX = rate
  1512.         00h no interrupts allowed
  1513.         01h 30 per second
  1514.         02h 50 per second
  1515.         03h 100 per second
  1516.         04h 200 per second
  1517. Notes:    only available on InPort mouse
  1518.     values greater than 4 may cause unpredictable driver behavior
  1519. --------M-33001D-----------------------------
  1520. INT 33 - MS MOUSE - DEFINE DISPLAY PAGE NUMBER
  1521.     AX = 001Dh
  1522.     BX = display page number
  1523. Note:    the cursor will be displayed on the specified page
  1524. SeeAlso: AX=001Eh
  1525. --------M-33001E-----------------------------
  1526. INT 33 - MS MOUSE - RETURN DISPLAY PAGE NUMBER
  1527.     AX = 001Eh
  1528. Return: BX = display page number
  1529. SeeAlso: AX=001Dh
  1530. --------M-33001F-----------------------------
  1531. INT 33 - MS MOUSE - DISABLE MOUSE DRIVER
  1532.     AX = 001Fh
  1533. Return: AX = 001Fh unsuccessful
  1534.          FFFFh successful
  1535.     ES:BX = vector for INT 33 before mouse driver was first installed
  1536. Notes:    restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
  1537.     if you restore INT 33 to ES:BX, driver will be completely disabled
  1538.     many drivers return AX=001Fh even though the driver has been disabled
  1539. SeeAlso: AX=0020h
  1540. --------M-330020-----------------------------
  1541. INT 33 - MS MOUSE - ENABLE MOUSE DRIVER
  1542.     AX = 0020h
  1543. Return: AX = 0020h unsuccessful (or driver not installed)
  1544.          FFFFh successful
  1545. Notes:    restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
  1546.       which were removed by function 1Fh
  1547.     many drivers return AX=0020h even though the driver has been enabled
  1548. SeeAlso: AX=001Fh
  1549. --------M-330021-----------------------------
  1550. INT 33 - MS MOUSE - SOFTWARE RESET
  1551.     AX = 0021h
  1552. Return: AX = FFFFh if mouse driver installed
  1553.         BX = number of buttons (FFFFh = two buttons)
  1554.          0021h if mouse driver not installed
  1555. Note:    identical to funtion 00h, but does not reset the mouse
  1556. SeeAlso: AX=0000h
  1557. --------M-330022-----------------------------
  1558. INT 33 - MS MOUSE - SET LANGUAGE FOR MESSAGES
  1559.     AX = 0022h
  1560.     BX = language (see below)
  1561. Note:    only available on international versions of the driver; US versions
  1562.       ignore this call
  1563. SeeAlso: AX=0023h
  1564.  
  1565. Values for language:
  1566.  00h    English
  1567.  01h    French
  1568.  02h    Dutch
  1569.  03h    German
  1570.  04h    Swedish
  1571.  05h    Finnish
  1572.  06h    Spanish
  1573.  07h    Portugese
  1574.  08h    Italian
  1575. --------M-330023-----------------------------
  1576. INT 33 - MS MOUSE - GET LANGUAGE FOR MESSAGES
  1577.     AX = 0023h
  1578. Return: BX = language (see AX=0022h)
  1579. Note:    the US version of the driver always returns zero
  1580. SeeAlso: AX=0022h
  1581. --------M-330024-----------------------------
  1582. INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
  1583.     AX = 0024h
  1584. Return: AX = FFFFh on error
  1585.     otherwise,
  1586.         BH = major version
  1587.         BL = minor version
  1588.         CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
  1589.         CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7)
  1590. SeeAlso: AX=004Dh,AX=006Dh
  1591. --------M-330025-----------------------------
  1592. INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
  1593.     AX = 0025h
  1594. Return: AX = general information
  1595.         bit 15: driver loaded as device driver rather than TSR
  1596.         bit 14: driver is newer integrated type
  1597.         bits 13,12: current cursor type
  1598.             00 software text cursor
  1599.             01 hardware text cursor
  1600.             1X graphics cursor
  1601.         bits 11-8: interrupt rate (see AX=001Ch)
  1602.         bits 7-0:  count of currently-active Mouse Display Drivers (MDD),
  1603.             the newer integrated driver type
  1604.     BX = cursor lock flag for OS/2 to prevent reentrancy problems
  1605.     CX = mouse code active flag (for OS/2)
  1606.     DX = mouse driver busy flag (for OS/2)
  1607. --------M-330026-----------------------------
  1608. INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
  1609.     AX = 0026h
  1610. Return: BX = mouse-disabled flag
  1611.     CX = maximum virtual X (for current video mode)
  1612.     DX = maximum virtual Y
  1613. SeeAlso: AX=0031h
  1614. --------M-330026-----------------------------
  1615. INT 33 - Genius Mouse 9.06 - ???
  1616.     AX = 0026h
  1617. Return: CX = 0204h if CX was 0105h on entry, else unchanged
  1618. --------M-330027-----------------------------
  1619. INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
  1620.     AX = 0027h
  1621. Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
  1622.     BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
  1623.     CX = horizontal mickeys moved since last call
  1624.     DX = vertical mickeys moved since last call
  1625. SeeAlso: AX=000Bh
  1626. --------M-330028-----------------------------
  1627. INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
  1628.     AX = 0028h
  1629.     CX = new video mode (call is NOP if 0000h)
  1630.     DH = Y font size (00h = default)
  1631.     DL = X font size (00h = default)
  1632. Return: CL = status (00h = successful)
  1633. Note:    DX is ignored unless the selected video mode supports font size control
  1634. SeeAlso: AX=0029h,INT 10/AH=00h
  1635. --------M-330029-----------------------------
  1636. INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
  1637.     AX = 0029h
  1638.     CX = previous video mode
  1639.         0000h get first supported video mode
  1640.         other get next supported mode after mode CX
  1641. Return: CX = first/next video mode (0000h = no more video modes)
  1642.     DS:DX -> description of video mode or 0000h:0000h if none
  1643. Notes:    the enumerated video modes may be in any order and may repeat
  1644.     the description string (if available) is terminated by '$' followed by
  1645.       a NUL byte
  1646. SeeAlso: AX=0028h
  1647. --------M-33002A-----------------------------
  1648. INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
  1649.     AX = 002Ah
  1650. Return: AX = internal counter controlling cursor visibility
  1651.     BX = cursor hot spot column
  1652.     CX = cursor hot spot row
  1653.     DX = mouse type (00h none, 01h bus, 02h serial, 03h InPort, 04h IBM,
  1654.              05h Hewlett-Packard)
  1655. Note:    the hot spot location is relative to the upper left corner of the
  1656.       cursor block and may range from -128 to +127 both horizontally and
  1657.       vertically
  1658. SeeAlso: AX=0009h,AX=0012h,AX=0035h
  1659. --------M-33002B-----------------------------
  1660. INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
  1661.     AX = 002Bh
  1662.     BX = active acceleration profile
  1663.         0001h-0004h or FFFFh to restore default curves
  1664.     ES:SI -> buffer containing acceleration profile data (see below)
  1665. Return: AX = success flag
  1666. SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
  1667.  
  1668. Format of acceleration profile data:
  1669. Offset    Size    Description
  1670.  00h    BYTE    length of acceleration profile 1
  1671.  01h    BYTE    length of acceleration profile 2
  1672.  02h    BYTE    length of acceleration profile 3
  1673.  03h    BYTE    length of acceleration profile 4
  1674.  04h 32 BYTEs    threshold speeds for acceleration profile 1
  1675.  24h 32 BYTEs    threshold speeds for acceleration profile 2
  1676.  44h 32 BYTEs    threshold speeds for acceleration profile 3
  1677.  64h 32 BYTEs    threshold speeds for acceleration profile 4
  1678.  84h 32 BYTEs    speedup factor for acceleration profile 1
  1679.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1680.  A4h 32 BYTEs    speedup factor for acceleration profile 2
  1681.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1682.  C4h 32 BYTEs    speedup factor for acceleration profile 3
  1683.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1684.  E4h 32 BYTEs    speedup factor for acceleration profile 4
  1685.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1686. 104h 16 BYTEs    name of acceleration profile 1 (blank-padded)
  1687. 114h 16 BYTEs    name of acceleration profile 2 (blank-padded)
  1688. 124h 16 BYTEs    name of acceleration profile 3 (blank-padded)
  1689. 134h 16 BYTEs    name of acceleration profile 4 (blank-padded)
  1690. Note:    unused bytes in the threshold speed fields are filled with 7Fh and
  1691.       unused bytes in the speedup factor fields are filled with 10h
  1692. --------M-33002C-----------------------------
  1693. INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
  1694.     AX = 002Ch
  1695. Return: AX = status (0000h success)
  1696.     BX = currently-active acceleration profile
  1697.     ES:SI -> acceleration profile data (see AX=002Bh)
  1698. SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
  1699. --------M-33002D-----------------------------
  1700. INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
  1701.     AX = 002Dh
  1702.     BX = acceleration level
  1703.         0001h-0004h to set profile, or FFFFh to get current profile
  1704. Return: AX = status
  1705.         0000h successful
  1706.         ES:SI -> 16-byte blank-padded name of acceleration profile
  1707.         FFFEh invalid acceleration curve number
  1708.         ES:SI destroyed
  1709.     BX = active acceleration curve number
  1710. SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
  1711. --------M-33002E-----------------------------
  1712. INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
  1713.     AX = 002Eh
  1714.     BL = flag (if nonzero, fill ES:SI buffer with default names on return)
  1715.     ES:SI -> 64-byte buffer for profile names (16 bytes per name)
  1716. Return: AX = status (0000h success)
  1717.     ES:SI buffer filled with default names if BL nonzero on entry
  1718. Note:    not supported by Logitech driver v6.10
  1719. SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
  1720. --------M-33002F-----------------------------
  1721. INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
  1722.     AX = 002Fh
  1723. Return: AX = status
  1724. Note:    invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
  1725. SeeAlso: INT 2F/AH=53h
  1726. --------M-330030-----------------------------
  1727. INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
  1728.     AX = 0030h
  1729.     CX = command
  1730.         0000h get status of BallPoint device
  1731.         other set rotation angle and masks
  1732.         BX = rotation angle (-32768 to 32767 degrees)
  1733.         CH = primary button mask
  1734.         CL = secondary button mask
  1735. Return: AX = button status (FFFFh if no BallPoint)
  1736.         bit 5: button 1
  1737.         bit 4: button 2
  1738.         bit 3: button 3
  1739.         bit 2: button 4
  1740.         other: zero
  1741.     BX = rotation angle (0-360 degrees)
  1742.     CH = primary button mask
  1743.     CL = secondary button mask
  1744. --------M-330031-----------------------------
  1745. INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
  1746.     AX = 0031h
  1747. Return: AX = virtual X minimum
  1748.     BX = virtual Y minimum
  1749.     CX = virtual X maximum
  1750.     DX = virtual Y maximum
  1751. Note:    the minimum and maximum values are those set by AX=0007h and AX=0008h;
  1752.       the default is minimum = 0 and maximum = absolute maximum
  1753.       (see AX=0026h)
  1754. SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
  1755. --------M-330032-----------------------------
  1756. INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
  1757.     AX = 0032h
  1758. Return: AX = active function flags (FFFFh for v8.10)
  1759.         bit 15: function 0025h supported
  1760.         bit 14: function 0026h supported
  1761.         ...
  1762.         bit 0:    function 0034h supported
  1763.     BX = ??? (0000h) officially unused
  1764.     CX = ??? (E000h) officially unused
  1765.     DX = ??? (0000h) officially unused
  1766. --------M-330033-----------------------------
  1767. INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
  1768.     AX = 0033h
  1769.     CX = size of buffer
  1770.         0000h get required buffer size
  1771.         Return: AX = 0000h
  1772.             CX = required size (0154h for Logitech v6.10, 0159h
  1773.                 for MS v8.10-8.20)
  1774.         other
  1775.         ES:DX -> buffer of CX bytes
  1776.         Return: AX = 0000h
  1777.             CX = number of bytes returned
  1778.             ES:DX buffer filled (see below)
  1779. SeeAlso: AX=002Bh
  1780.  
  1781. Format of data buffer:
  1782. Offset    Size    Description
  1783.  00h    BYTE    mouse type
  1784.  01h    BYTE    current language
  1785.  02h    BYTE    horizontal sensitivity (00h-64h)
  1786.  03h    BYTE    vertical sensitivity (00h-64h)
  1787.  04h    BYTE    double-speed threshold (00h-64h)
  1788.  05h    BYTE    ballistic curve (01h-04h)
  1789.  06h    BYTE    interrupt rate (01h-04h)
  1790.  07h    BYTE    cursor override mask
  1791.  08h    BYTE    laptop adjustment
  1792.  09h    BYTE    memory type (00h-02h)
  1793.  0Ah    BYTE    SuperVGA support (00h,01h)
  1794.  0Bh    BYTE    rotation angle
  1795.  0Ch    BYTE    ???
  1796.  0Dh    BYTE    primary button (01h-04h)
  1797.  0Eh    BYTE    secondary button (01h-04h)
  1798.  0Fh    BYTE    click lock enabled (00h,01h)
  1799.  10h 324 BYTEs    acceleration profile data (see AX=002Bh)
  1800. 154h  5 BYTEs    ??? (Microsoft driver, but not Logitech)
  1801. --------M-330034-----------------------------
  1802. INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
  1803.     AX = 0034h
  1804. Return: AX = status (0000h successful)
  1805.     ES:DX -> ASCIZ initialization (.INI) file name
  1806. --------M-330035-----------------------------
  1807. INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
  1808.     AX = 0035h
  1809.     BX = function
  1810.         FFFFh get current settings
  1811.         Return: AX = 0000h
  1812.             BH = style (see below)
  1813.             BL = size (see below)
  1814.             CH = threshold
  1815.             CL = active flag (00h disabled, 01h enabled)
  1816.             DX = delay
  1817.         other
  1818.         BH = style (00h normal, 01h reverse, 02h transparent)
  1819.         BL = size (00h small "1", 01h medium "1.5", 02h large "2")
  1820.         CH = threshold (00h-64h)
  1821.         CL = active flag (00h disable size change, 01h enable)
  1822.         DX = delay (0000h-0064h)
  1823.         Return: AX = 0000h
  1824. Note:    not supported by Logitech driver v6.10
  1825. SeeAlso: AX=0012h,AX=002Ah
  1826. --------M-330042-----------------------------
  1827. INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
  1828.     AX = 0042h
  1829. Return: AX = FFFFh successful
  1830.         BX = buffer size in bytes for functions 50h and 52h
  1831.        = 0000h MSMOUSE not installed
  1832.        = 0042h functions 42h, 50h, and 52h not supported
  1833. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1834. SeeAlso: AX=0015h,AX=0050h,AX=0052h
  1835. --------M-330043-----------------------------
  1836. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - CONFIGURE MOUSE???
  1837.     AX = 0043h
  1838.     CX:BX -> ??? buffer (see below)
  1839.     DL = ???
  1840. Return: ???
  1841. Notes:    also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
  1842.     this function is also supported by the Genius Mouse 9.06 driver
  1843.  
  1844. Format of buffer:
  1845. Offset    Size    Description
  1846.  00h    WORD    I/O port address
  1847.  02h    BYTE    ???
  1848.  03h    BYTE    interrupt number
  1849.  04h    BYTE    interrupt mask for interrupt controller
  1850.  05h  5 BYTEs    ???
  1851. --------M-330044CXCDEF-----------------------
  1852. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - TOGGLE ???
  1853.     AX = 0044h
  1854.     CX = CDEFh
  1855. Return: AX = new state of ???
  1856. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1857. SeeAlso: AX=0045h
  1858. --------M-330045CXCDEF-----------------------
  1859. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - TOGGLE ???
  1860.     AX = 0045h
  1861.     CX = CDEFh
  1862. Return: AX = new state of ???
  1863. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1864. SeeAlso: AX=0044h
  1865. --------M-330047-----------------------------
  1866. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET BUTTON ASSIGNMENTS
  1867.     AX = 0047h
  1868.     ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
  1869. Return: ???
  1870. Note:    also supported by Genius Mouse 9.06 driver
  1871. SeeAlso: AX=0067h
  1872. --------M-330048BXCDEF-----------------------
  1873. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET ???
  1874.     AX = 0048h
  1875.     BX = CDEFh
  1876. Return: CX = ???
  1877.     BH = ???
  1878.     BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
  1879. Note:    also supported by Genius Mouse 9.06 driver
  1880. --------M-33004B-----------------------------
  1881. INT 33 - Z-NIX MOUSE DRIVER v7.04d - INSTALLATION CHECK
  1882.     AX = 004Bh
  1883. Return: ES:DI -> signature/description string if installed
  1884. Note:    the signature string in v7.04d is
  1885.       "Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
  1886. --------M-33004CBXCDEF-----------------------
  1887. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET ??? FLAG
  1888.     AX = 004Ch
  1889.     BX = CDEFh
  1890. Note:    also supported by Genius Mouse 9.06
  1891. SeeAlso: AX=006Ch
  1892. --------M-33004D-----------------------------
  1893. INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
  1894.     AX = 004Dh
  1895. Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft"
  1896. Notes:    also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
  1897.       mouse drivers
  1898.     in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
  1899.       follows the above copyright message (KYE Corp. manufactures the
  1900.       driver)
  1901. SeeAlso: AX=0024h,AX=006Dh
  1902. --------M-33004F-----------------------------
  1903. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ENABLE MOUSE
  1904.     AX = 004Fh
  1905. Return: nothing
  1906. Note:    also supported by Genius Mouse 9.06
  1907. SeeAlso: AX=0043h,AX=0053h
  1908. --------M-330050-----------------------------
  1909. INT 33 - PCMOUSE - SAVE MSMOUSE STATE
  1910.     AX = 0050h
  1911.     BX = buffer size (ignored by some driver versions)
  1912.     ES:DX -> buffer
  1913. Return: AX = FFFFh if successful
  1914. Notes:    the buffer must be large enough to hold the entire state, or following
  1915.       data will be overwritten by state data in versions which ignore BX;
  1916.       use INT 33/AX=0042h to get the required size
  1917.     this function is also supported by the Genius Mouse 9.06 driver
  1918. SeeAlso: AX=0042h,AX=0052h
  1919. --------M-330052-----------------------------
  1920. INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
  1921.     AX = 0052h
  1922.     BX = buffer size (ignored by some driver versions)
  1923.     ES:DX -> buffer
  1924. Return: AX = FFFFh if successful
  1925. Note:    also supported by Genius Mouse 9.06 driver
  1926. SeeAlso: AX=0050h
  1927. --------M-330053-----------------------------
  1928. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - DISABLE MOUSE
  1929.     AX = 0053h
  1930. Return: nothing
  1931. Note:    also supported by Genius Mouse 9.06
  1932. SeeAlso: AX=0043h,AX=004Fh
  1933. --------M-330054CXCDEF-----------------------
  1934. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SELECT ULTRARES ACCELERATION LEVEL
  1935.     AX = 0054h
  1936.     CX = CDEFh
  1937.     BX = ??? (NOP if <= 0000h)
  1938. Return: ???
  1939. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1940. SeeAlso: AX=005Ah
  1941. --------M-330055-----------------------------
  1942. INT 33 - Kraft Mouse - GET ???
  1943.     AX = 0055h
  1944. Return: CX = ???
  1945.     DX = ???
  1946.     ES = ???
  1947. --------M-330058-----------------------------
  1948. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
  1949.     AX = 0058h
  1950. Return: AX = CS of driver
  1951.     CX:BX = original INT 33 vector
  1952.     DX = ???
  1953. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1954. --------M-33005A-----------------------------
  1955. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET ULTRARES ACCELERATIONS
  1956.     AX = 005Ah
  1957.     CX = number of WORDs to copy (max 0014h, but not range-checked)
  1958.     DX:SI -> buffer containing thresholds??? (CX words)
  1959.     DX:BX -> buffer containing acceleration values???
  1960.         (9*14h words, only first CX of each 14h used)
  1961.     ???
  1962. Return: CF clear
  1963.     ???
  1964. Note:    this function is also supported by Genius Mouse 9.06
  1965. SeeAlso: AX=0054h
  1966. --------M-330061BXCDEF-----------------------
  1967. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
  1968.     AX = 0061h
  1969.     BX = CDEFh
  1970. Return: CX = ???
  1971. Note:    also supported by Genius Mouse 9.06
  1972. --------M-330067-----------------------------
  1973. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET MOUSE BUTTONS???
  1974.     AX = 0067h
  1975. Return: BL = number of buttons???
  1976. Note:    also supported by Genius Mouse 9.06
  1977. SeeAlso: AX=0047h
  1978. --------M-33006CBXCDEF-----------------------
  1979. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - CLEAR ??? FLAG
  1980.     AX = 006Ch
  1981.     BX = CDEFh
  1982. Note:    also supported by Genius Mouse 9.06
  1983. SeeAlso: AX=004Ch
  1984. --------M-33006D-----------------------------
  1985. INT 33 - MS MOUSE - GET VERSION STRING
  1986.     AX = 006Dh
  1987. Return: ES:DI -> Microsoft version number of resident driver (see below)
  1988. Notes:    also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
  1989.       drivers
  1990.     the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
  1991.       Microsoft version as 7.00 even though they do not support any of the
  1992.       functions from 0025h through 002Dh supported by the MS 7.00 driver
  1993.       (the Genius Mouse driver supports function 0026h, but it differs
  1994.       from the Microsoft function)
  1995. SeeAlso: AX=0024h,AX=004Dh,AX=266Ch
  1996.  
  1997. Format of Microsoft version number:
  1998. Offset    Size    Description
  1999.  00h    BYTE    major version
  2000.  01h    BYTE    minor version (BCD)
  2001. --------M-330070BXABCD-----------------------
  2002. INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
  2003.     AX = 0070h
  2004.     BX = ABCDh
  2005. Return: AX = ABCDh if installed
  2006.         BX:CX -> data structure (see below)
  2007. Notes:    this function is also supported by the Genius Mouse 9.06 driver
  2008.     the v7.01 POPUP.COM and menu drivers also check for the signature
  2009.       CDh ABh BAh DCh at offset -2Ch from the interrupt handler
  2010.     if POPUP is not loaded, the returned data structure contains the proper
  2011.       signature at offset 00h, but not at offset 08h
  2012.  
  2013. Format of data structure:
  2014. Offset    Size    Description
  2015.  00h    WORD    signature ABCDh
  2016.  02h    DWORD    pointer to info structure???
  2017.  06h  2 BYTEs    ???
  2018.  08h    WORD    signature ABCDh
  2019.  
  2020. Format of info structure:
  2021. Offset    Size    Description
  2022.  00h    WORD    driver version
  2023.  02h  8 BYTEs    ???
  2024.  0Ah    WORD    segment of ???
  2025.     ???
  2026. --------M-330072BXABCD-----------------------
  2027. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
  2028.     AX = 0072h
  2029.     BX = ABCDh
  2030. Return: ???
  2031. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2032. --------M-330073BXCDEF-----------------------
  2033. INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET BUTTON ASSIGNMENTS
  2034.     AX = 0073h
  2035.     BX = CDEFh
  2036.     ES:DX -> 3-byte buffer for button assignments
  2037. Return: CX = number of buttons???
  2038.     ES:DX buffer filled (default is "LMR")
  2039. Note:    also supported by Genius Mouse 9.06
  2040. SeeAlso: AX=0067h
  2041. --------M-33012E-----------------------------
  2042. INT 33 - MS MOUSE v8.10+ - ???
  2043.     AX = 012Eh
  2044.     BL = ???
  2045. Return: AX = 0000h
  2046. Note:    not supported by Logitech driver v6.10
  2047. SeeAlso: AX=002Eh,AX=022Eh
  2048. --------M-33022E-----------------------------
  2049. INT 33 - MS MOUSE v8.10+ - ???
  2050.     AX = 022Eh
  2051.     BL = ???
  2052. Return: AX = 0000h
  2053. Note:    not supported by Logitech driver v6.10
  2054. SeeAlso: AX=002Eh,AX=012Eh
  2055. --------M-33136C-----------------------------
  2056. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2057.     AX = 136Ch
  2058.     BX = ???
  2059. Return: AX = ???
  2060.     BX = ???
  2061. --------M-33146C-----------------------------
  2062. INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
  2063.     AX = 146Ch
  2064.     BL = function
  2065.         00h set ???
  2066.         BH = new value (zero/nonzero to clear/set)
  2067.         else get ???
  2068.         Return: ???
  2069. --------M-33156C-----------------------------
  2070. INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
  2071.     AX = 156Ch
  2072. Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
  2073.     ES:SI -> version string, terminated with CRLF
  2074. --------M-33166C-----------------------------
  2075. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2076.     AX = 166Ch
  2077.     BL = ???
  2078.         00h ???
  2079.         01h ???
  2080.         other ???
  2081.         BH = new value of ???
  2082.         Return: AX = FFFFh
  2083. --------M-33176C-----------------------------
  2084. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2085.     AX = 176Ch
  2086.     ???
  2087. Return: ???
  2088. --------M-33186C-----------------------------
  2089. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2090.     AX = 186Ch
  2091.     ???
  2092. Return: ???
  2093. --------M-33196C-----------------------------
  2094. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2095.     AX = 196Ch
  2096.     ???
  2097. Return: ???
  2098. --------M-331A6C-----------------------------
  2099. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2100.     AX = 1A6Ch
  2101. Return: AX = FFFFh
  2102.     BX = ???
  2103.     CX = ???
  2104. SeeAlso: AX=1B6Ch
  2105. --------M-331B6C-----------------------------
  2106. INT 33 - LOGITECH MOUSE v6.10+ - SET ???
  2107.     AX = 1B6Ch
  2108.     BX = new value for ??? (0000h-0003h)
  2109. Return: AX = FFFFh
  2110. SeeAlso: AX=1A6Ch
  2111. --------M-331C6C-----------------------------
  2112. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2113.     AX = 1C6Ch
  2114.     BX = ???
  2115.         <42h ???
  2116.         =42h ???
  2117.         >42h ???
  2118.             ES:DI -> ???
  2119.             Return: AX = ???
  2120. --------M-331D6C-----------------------------
  2121. INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
  2122.     AX = 1D6Ch
  2123. Return: BX = direction (0=north, 1=south, 2=east, 3=west)
  2124. SeeAlso: AX=1E6Ch
  2125. --------M-331E6C-----------------------------
  2126. INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
  2127.     AX = 1E6Ch
  2128.     BX = direction (0=north, 1=south, 2=east, 3=west)
  2129. SeeAlso: AX=1D6Ch
  2130. --------M-331F6C-----------------------------
  2131. INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
  2132.     AX = 1F6Ch
  2133. Return: BX = 0=off, 1=on
  2134.     CX = 1=low, 2=high
  2135. SeeAlso: AX=002Ch,AX=236Ch
  2136. --------M-33206C-----------------------------
  2137. INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
  2138.     AX = 206Ch
  2139.     BX = parameter (00h = right, FFh = left)
  2140. SeeAlso: AX=216Ch
  2141. --------M-33216C-----------------------------
  2142. INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
  2143.     AX = 216Ch
  2144. Return: BX = parameter (00h = right, FFh = left)
  2145. SeeAlso: AX=206Ch
  2146. --------M-33226C-----------------------------
  2147. INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
  2148.     AX = 226Ch
  2149. Note:    this only frees memory; does not restore hooked interrupts
  2150. --------M-33236C-----------------------------
  2151. INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
  2152.     AX = 236Ch
  2153.     BX = 0=off, 1=on
  2154.     CX = 1=low, 2=high
  2155. SeeAlso: AX=002Ch,AX=1F6Ch
  2156. --------M-33246C-----------------------------
  2157. INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
  2158.     AX = 246Ch
  2159.     ES:DX -> parameter table buffer (see below)
  2160. Return: AX = FFFFh if driver installed for serial mouse
  2161. SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
  2162.  
  2163. Format of parameter table:
  2164. Offset    Size    Description
  2165.  00h    WORD    baud rate divided by 100  (serial mouse only)
  2166.  02h    WORD    emulation          (serial mouse only)
  2167.  04h    WORD    report rate          (serial mouse only)
  2168.  06h    WORD    firmware revision      (serial mouse only)
  2169.  08h    WORD    00h              (serial mouse only)
  2170.  0Ah    WORD    port              (serial mouse only)
  2171.  0Ch    WORD    physical buttons
  2172.  0Eh    WORD    logical buttons
  2173. --------M-33256CBX0000-----------------------
  2174. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
  2175.     AX = 256Ch
  2176.     BX = 0000h
  2177.     CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
  2178. Return: AX = FFFFh if driver installed for serial mouse
  2179. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
  2180. --------M-33256CBX0001-----------------------
  2181. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
  2182.     AX = 256Ch
  2183.     BX = 0001h
  2184.     CX = emulation
  2185.         00h 5 byte packed binary
  2186.         01h 3 byte packed binary
  2187.         02h hexadecimal
  2188.         03h relative bit pad
  2189.         04h not supported
  2190.         05h MM Series
  2191.         06h not supported
  2192.         07h Microsoft
  2193. Return: AX = FFFFh if driver installed for serial mouse
  2194. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
  2195. --------M-33256CBX0002-----------------------
  2196. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
  2197.     AX = 256Ch
  2198.     BX = 0002h
  2199.     CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
  2200. Return: AX = FFFFh if driver installed for serial mouse
  2201. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
  2202. --------M-33256CBX0003-----------------------
  2203. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
  2204.     AX = 256Ch
  2205.     BX = 0003h
  2206.     CX = port (1, 2)
  2207. Return: AX = FFFFh if driver installed for serial mouse
  2208. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
  2209. --------M-33256CBX0004-----------------------
  2210. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
  2211.     AX = 256Ch
  2212.     BX = 0004h
  2213.     CX = buttons (2, 3)
  2214. Return: AX = FFFFh if driver installed for serial mouse
  2215. SeeAlso: AX=246Ch,AX=276Ch
  2216. --------M-33266C-----------------------------
  2217. INT 33 - LOGITECH MOUSE - GET VERSION???
  2218.     AX = 266Ch
  2219. Return: BX = 'SS'
  2220.     CH = '4'  major version number
  2221.     CL = '1'  minor version number
  2222. SeeAlso: AX=006Dh
  2223. --------M-33276C-----------------------------
  2224. INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
  2225.     AX = 276Ch
  2226. SeeAlso: AX=256Ch
  2227. --------M-333000-----------------------------
  2228. INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
  2229.     AX = 3000h
  2230. Return: AX = FFFFh if installed
  2231.         BX = version number (BH = major, BL = minor)
  2232. Program: SMD is a programmer's library by Andy Hakim which provides a
  2233.       graphics-style mouse cursor in text mode.  PrecisePoint is an
  2234.       SMD-based TSR which replaces the block mouse cursor in text
  2235.       applications.
  2236. SeeAlso: AX=0000h,AX=3001h,AX=3003h
  2237. --------M-333001-----------------------------
  2238. INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
  2239.     AX = 3001h
  2240. Return: AX = status (0000h = disabled, 0001h = enabled)
  2241. Note:    SMD remains disabled if running under Desqview or in graphics mode
  2242. SeeAlso: AX=0001h,AX=0002h,AX=3002h
  2243. --------M-333002-----------------------------
  2244. INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
  2245.     AX = 3002h
  2246. Return: AX = status (0000h = disabled, 0001h = enabled)
  2247. SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
  2248. --------M-333003-----------------------------
  2249. INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
  2250.     AX = 3003h
  2251.     BL = data structure selector
  2252.         00h Primary Bitmap (used for 25 line mode)
  2253.         01h Secondary Bitmap (used for 43/50 line modes)
  2254.         02h Sacrifice Character Map
  2255.         03h Program Information
  2256. Return: ES:DX -> selected data structure
  2257. SeeAlso: AX=3000h
  2258.  
  2259. Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]
  2260. Offset    Size    Description
  2261.  00h    BYTE    vertical size of bitmap (00h - 10h)
  2262.  01h    BYTE    horizontal size of bitmap (00h - 10h)
  2263.  02h    BYTE    vertical hotspot position (00h - 10h)
  2264.  03h    BYTE    horizontal hotspot position (00h - 10h)
  2265.  04h 16 WORDs    cursor bitmap data
  2266.  14h 16 WORDs    screen bitmap data
  2267.  
  2268. Format of Sacrifice Character Map [SMD_SMAP_STRUCT]
  2269. Offset    Size    Description
  2270.  00h    BYTE    bytes are character values (00h-FFh) used in place of the
  2271.  01h    BYTE    actual character for the corresponding position on the screen
  2272.  02h    BYTE         +--------------+      occupied by part or all of the mouse
  2273.  03h    BYTE         | 0h | 1h | 2h |      cursor
  2274.  04h    BYTE         |----+----+----|
  2275.  05h    BYTE         | 3h | 4h | 5h |
  2276.  06h    BYTE         |----+----+----|
  2277.  07h    BYTE         | 6h | 7h | 8h |
  2278.  08h    BYTE         +--------------+
  2279.  
  2280. Format of Program Information [SMD_INFO_STRUCT]
  2281. Offset    Size    Description
  2282.  00h    WORD    segment of old interrupt 33h handler
  2283.  02h    WORD    offset of old interrupt 33h handler
  2284.  04h    WORD    PSP of SMD
  2285.  06h    BYTE    ENABLE/DISABLE manual setting status
  2286.  07h    BYTE    ENABLE/DISABLE internal usage status
  2287. --------M-333004-----------------------------
  2288. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2289.     AX = 3004h
  2290. SeeAlso: AX=3000h
  2291. --------M-333005-----------------------------
  2292. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2293.     AX = 3005h
  2294. SeeAlso: AX=3000h
  2295. --------M-334F00-----------------------------
  2296. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2297.     AX = 4F00h
  2298. Return: AX = 004Fh if supported
  2299.     BX = ???
  2300.     ES:DI -> ???
  2301. SeeAlso: AX=4F01h
  2302. --------M-334F01-----------------------------
  2303. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2304.     AX = 4F01h
  2305.     ES = ???
  2306. Return: AX = 004Fh if supported
  2307.     ES:DI -> ???
  2308. SeeAlso: AX=4F00h
  2309. --------T-33FFE6-----------------------------
  2310. INT 33 - Switch-It v3.23 - GET ??? PROGRAM
  2311.     AX = FFE6h
  2312.     CX = length of buffer
  2313.     ES:DI -> buffer for program name
  2314. Return: ES:DI buffer filled
  2315. Program: Switch-It is a task switcher supporting up to 100 programs
  2316.       simultaneously by Better Software Technology, Inc.
  2317. --------T-33FFE7-----------------------------
  2318. INT 33 - Switch-It v3.23 - GET ???
  2319.     AX = FFE7h
  2320. Return: AX = ???
  2321. --------T-33FFE8-----------------------------
  2322. INT 33 - Switch-It v3.23 - ???
  2323.     AX = FFE8h
  2324.     CX = length of name including terminating NUL
  2325.     DS:SI -> ASCIZ program pathname
  2326. --------T-33FFE9-----------------------------
  2327. INT 33 - Switch-It v3.23 - SET ???
  2328.     AX = FFE9h
  2329.     BX = ???
  2330. --------T-33FFEA-----------------------------
  2331. INT 33 - Switch-It v3.23 - SET ???
  2332.     AX = FFEAh
  2333.     BL = ???
  2334. --------T-33FFEB-----------------------------
  2335. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2336.     AX = FFEBh
  2337. --------T-33FFEC-----------------------------
  2338. INT 33 - Switch-It v3.23 - SET ???
  2339.     AX = FFECh
  2340.     BL = ???
  2341. --------T-33FFED-----------------------------
  2342. INT 33 - Switch-It v3.23 - GET ???
  2343.     AX = FFEDh
  2344. Return: AX = ??? (0001h)
  2345.     BX = ???
  2346. Program: Switch-It is a task switcher supporting up to 100 programs
  2347.       simultaneously by Better Software Technology, Inc.
  2348. --------T-33FFEE-----------------------------
  2349. INT 33 - Switch-It v3.23 - GET ???
  2350.     AX = FFEEh
  2351. Return: AX = ???
  2352. --------T-33FFEF-----------------------------
  2353. INT 33 - Switch-It v3.23 - GET ???
  2354.     AX = FFEFh
  2355. Return: BX:AX -> ???
  2356. --------T-33FFF0-----------------------------
  2357. INT 33 - Switch-It v3.23 - SET ???
  2358.     AX = FFF0h
  2359.     BL = ???
  2360. --------T-33FFF1-----------------------------
  2361. INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
  2362.     AX = FFF1h
  2363. Return: BX:AX -> ASCIZ pathname of configuration file
  2364. Program: Switch-It is a task switcher supporting up to 100 programs
  2365.       simultaneously by Better Software Technology, Inc.
  2366. --------T-33FFF2-----------------------------
  2367. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2368.     AX = FFF2h
  2369. Return: AL = 01h
  2370. --------T-33FFF3-----------------------------
  2371. INT 33 - Switch-It v3.23 - GET ???
  2372.     AX = FFF3h
  2373. Return: AX = ???
  2374. --------T-33FFF4-----------------------------
  2375. INT 33 - Switch-It v3.23 - SET ???
  2376.     AX = FFF4h
  2377.     BX = ???
  2378.     CX = ???
  2379. --------T-33FFF5-----------------------------
  2380. INT 33 - Switch-It v3.23 - GET ???
  2381.     AX = FFF5h
  2382. Return: AX = ???
  2383. --------T-33FFF6-----------------------------
  2384. INT 33 - Switch-It v3.23 - GET ???
  2385.     AX = FFF6h
  2386. Return: AX = ???
  2387. --------T-33FFF7-----------------------------
  2388. INT 33 - Switch-It v3.23 - GET ???
  2389.     AX = FFF7h
  2390.     BX = index of ???
  2391. Return: AX = ???
  2392. --------T-33FFF8-----------------------------
  2393. INT 33 - Switch-It v3.23 - ???
  2394.     AX = FFF8h
  2395.     BX = ???
  2396.     CX = length of program name, including terminating NUL
  2397.     DS:SI -> ASCIZ program pathname
  2398. Return: ???
  2399. Program: Switch-It is a task switcher supporting up to 100 programs
  2400.       simultaneously by Better Software Technology, Inc.
  2401. --------T-33FFF9-----------------------------
  2402. INT 33 - Switch-It v3.23 - NOP
  2403.     AX = FFF9h
  2404. --------T-33FFFA-----------------------------
  2405. INT 33 - Switch-It v3.23 - SET ???
  2406.     AX = FFFAh
  2407.     BX = index of program
  2408. SeeAlso: AX=FFFBh,AX=FFFCh
  2409. --------T-33FFFB-----------------------------
  2410. INT 33 - Switch-It v3.23 - GET ???
  2411.     AX = FFFBh
  2412.     BX = index of program
  2413. Return: AX = ??? (0000h or 0001h)
  2414. SeeAlso: AX=FFFAh,AX=FFFCh
  2415. --------T-33FFFC-----------------------------
  2416. INT 33 - Switch-It v3.23 - CLEAR ???
  2417.     AX = FFFCh
  2418.     BX = index of program
  2419. SeeAlso: AX=FFFAh,AX=FFFCh
  2420. --------T-33FFFD-----------------------------
  2421. INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
  2422.     AX = FFFDh
  2423. Return: AX = first available segment???
  2424.     BX = paragraph of top of conventional memory
  2425.     DX = PSP segment of SI.EXE
  2426. --------T-33FFFE-----------------------------
  2427. INT 33 - Switch-It v3.23 - INSTALLATION CHECK
  2428.     AX = FFFEh
  2429. Return: BX = ???
  2430.     DX = 5349h ("SI")
  2431. --------T-33FFFF-----------------------------
  2432. INT 33 - Switch-It v3.23 - ???
  2433.     AX = FFFFh
  2434.     BX = ???
  2435. Program: Switch-It is a task switcher supporting up to 100 programs
  2436.       simultaneously by Better Software Technology, Inc.
  2437. --------r-34---------------------------------
  2438. INT 34 - FLOATING POINT EMULATION - OPCODE D8h
  2439. Desc:    this interrupt is used to emulate floating-point instructions with
  2440.       an opcode of D8h
  2441. Note:    the floating-point emulators in Borland and Microsoft languages and
  2442.       Lahey FORTRAN use this interrupt
  2443. SeeAlso: INT 35,INT 3E
  2444. --------r-35---------------------------------
  2445. INT 35 - FLOATING POINT EMULATION - OPCODE D9h
  2446. Desc:    this interrupt is used to emulate floating-point instructions with
  2447.       an opcode of D9h
  2448. Note:    the floating-point emulators in Borland and Microsoft languages and
  2449.       Lahey FORTRAN use this interrupt
  2450. SeeAlso: INT 34,INT 36
  2451. --------r-36---------------------------------
  2452. INT 36 - FLOATING POINT EMULATION - OPCODE DAh
  2453. Desc:    this interrupt is used to emulate floating-point instructions with
  2454.       an opcode of DAh
  2455. Note:    the floating-point emulators in Borland and Microsoft languages and
  2456.       Lahey FORTRAN use this interrupt
  2457. SeeAlso: INT 35,INT 37
  2458. --------r-37---------------------------------
  2459. INT 37 - FLOATING POINT EMULATION - OPCODE DBh
  2460. Desc:    this interrupt is used to emulate floating-point instructions with
  2461.       an opcode of DBh
  2462. Note:    the floating-point emulators in Borland and Microsoft languages and
  2463.       Lahey FORTRAN use this interrupt
  2464. SeeAlso: INT 36,INT 38
  2465. --------r-38---------------------------------
  2466. INT 38 - FLOATING POINT EMULATION - OPCODE DCh
  2467. Desc:    this interrupt is used to emulate floating-point instructions with
  2468.       an opcode of DCh
  2469. Note:    the floating-point emulators in Borland and Microsoft languages and
  2470.       Lahey FORTRAN use this interrupt
  2471. SeeAlso: INT 37,INT 39
  2472. --------O-38---------------------------------
  2473. INT 38 - PC-MOS/386 v3.0 - API
  2474. Note:    this API was been moved to INT D4h sometime between versions 3.0 and
  2475.       5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
  2476.       12h
  2477. SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
  2478. --------r-39---------------------------------
  2479. INT 39 - FLOATING POINT EMULATION - OPCODE DDh
  2480. Desc:    this interrupt is used to emulate floating-point instructions with
  2481.       an opcode of DDh
  2482. Note:    the floating-point emulators in Borland and Microsoft languages and
  2483.       Lahey FORTRAN use this interrupt
  2484. SeeAlso: INT 38,INT 3A
  2485. --------r-3A---------------------------------
  2486. INT 3A - FLOATING POINT EMULATION - OPCODE DEh
  2487. Desc:    this interrupt is used to emulate floating-point instructions with
  2488.       an opcode of DEh
  2489. Note:    the floating-point emulators in Borland and Microsoft languages and
  2490.       Lahey FORTRAN use this interrupt
  2491. SeeAlso: INT 39,INT 3B
  2492. --------r-3B---------------------------------
  2493. INT 3B - FLOATING POINT EMULATION - OPCODE DFh
  2494. Desc:    this interrupt is used to emulate floating-point instructions with
  2495.       an opcode of DFh
  2496. Note:    the floating-point emulators in Borland and Microsoft languages and
  2497.       Lahey FORTRAN use this interrupt
  2498. SeeAlso: INT 3A,INT 3C
  2499. --------r-3C---------------------------------
  2500. INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
  2501. Notes:    the floating-point emulators in Borland and Microsoft languages and
  2502.       Lahey FORTRAN use this interrupt
  2503.     the generated code is  CD 3C xy mm ....
  2504.       where xy is a modified ESC instruction and mm is the modR/M byte.
  2505.       The xy byte appears to be encoded as
  2506.         s s 0 1 1 x x x      or    s s 0 0 0 x x x
  2507.       where "ss" specifies the segment override:
  2508.         00 -> DS:
  2509.         01 -> SS:
  2510.         10 -> CS:
  2511.         11 -> ES:
  2512. SeeAlso: INT 3B,INT 3D
  2513. --------r-3D---------------------------------
  2514. INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
  2515. Notes:    the floating-point emulators in Borland and Microsoft languages and
  2516.       Lahey FORTRAN use this interrupt
  2517.     this vector is modified but not restored by Direct Access v4.0, and
  2518.       may be left dangling by other programs written with the same version
  2519.       of compiled BASIC
  2520. SeeAlso: INT 3C,INT 3E
  2521. --------r-3E---------------------------------
  2522. INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
  2523. Notes:    the two bytes following the INT 3E instruction are the subcode and
  2524.       a NOP (90h), except for subcodes DCh and DEh, where the second byte
  2525.       is a register count (01h-08h)
  2526.     this vector is modified but not restored by Direct Access v4.0, and
  2527.       may be left dangling by other programs written with the same version
  2528.       of compiled BASIC
  2529. SeeAlso: INT 3D
  2530.  
  2531. Values for subcode:
  2532. Subcode        Function
  2533.  DCh    load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
  2534.       top of the stack prior to the INT 3E with the 8087 register contents
  2535.  DEh    load 8087 registers from top of 8086 stack; ST0 is furthest from top
  2536.       of 8086 stack
  2537.  E0h    round TOS and R1 to single precision, compare, pop twice
  2538.       returns AX=8087 status word, FLAGS=8087 condition bits
  2539.  E2h    round TOS and R1 to double precision, compare, pop twice
  2540.       returns AX=8087 status word, FLAGS=8087 condition bits
  2541.     Note: buggy in TPas5.5, because it sets the 8087 precision control
  2542.       field to the undocumented value 01h; this results in actually
  2543.       rounding to single precision
  2544.  E4h    compare TOS/R1 with two POP's
  2545.       returns FLAGS=8087 condition bits
  2546.  E6h    compare TOS/R1 with POP
  2547.       returns FLAGS=8087 condition bits
  2548.  E8h    FTST (check TOS value)
  2549.       returns FLAGS=8087 condition bits
  2550.  EAh    FXAM (check TOS value)
  2551.       returns AX=8087 status word
  2552.  ECh    sine(ST0)
  2553.  EEh    cosine(ST0)
  2554.  F0h    tangent(ST0)
  2555.  F2h    arctangent(ST0)
  2556.  F4h    ST0 = ln(ST0)
  2557.  F6h    ST0 = log2(ST0)
  2558.  F8h    ST0 = log10(ST0)
  2559.  FAh    ST0 = e**ST0
  2560.  FCh    ST0 = 2**ST0
  2561.  FEh    ST0 = 10**ST0
  2562. --------r-3F---------------------------------
  2563. INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
  2564. Notes:    INT 3F is the default, and may be overridden while linking
  2565.     this vector is modified but not restored by Direct Access v4.0, and
  2566.       may be left dangling by other programs written with the same version
  2567.       of compiled BASIC
  2568. SeeAlso: INT FE"OVERLAY"
  2569. --------r-3F---------------------------------
  2570. INT 3F - Microsoft Dynamic Link Library manager
  2571. SeeAlso: INT 21/AH=4Bh
  2572. --------B-40---------------------------------
  2573. INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
  2574. SeeAlso: INT 13,INT 47"SuperBIOS",INT 63
  2575. --------h-40---------------------------------
  2576. INT 40 - Z100 - Master 8259 - Parity error or S100 error
  2577. SeeAlso: INT 41"Z100",INT FF"Z100"
  2578. --------O-40---------------------------------
  2579. INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
  2580.     AL = operation
  2581.         00h close file
  2582.         40h open file for reading
  2583.         80h open file for writing
  2584.         C0h open file for random access
  2585.     DS:BX -> CR-terminated filename
  2586. Return: AL = file handle (00h if file closed or could not be opened)
  2587. Note:    the Acorn BBC Master 512 is an 80186-based add-on board for the
  2588.       6502-based Master 128 which uses the original CPU as an I/O processor
  2589. SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
  2590. --------B-41---------------------------------
  2591. INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
  2592. Note:    the default parameter table array is located at F000h:E401h in 100%
  2593.       compatible BIOSes; the pointer may be overridden by the hard disk
  2594.       controller's BIOS to support drive formats unknown to the ROM BIOS
  2595. SeeAlso: INT 13/AH=09h,INT 1E,INT 46
  2596.  
  2597. Format of fixed disk parameters:
  2598. Offset    Size    Description
  2599.  00h    WORD    number of cylinders
  2600.  02h    BYTE    number of heads
  2601.  03h    WORD    starting reduced write current cylinder (XT only, 0 for others)
  2602.  05h    WORD    starting write precompensation cylinder number
  2603.  07h    BYTE    maximum ECC burst length (XT only)
  2604.  08h    BYTE    control byte
  2605.            bits 0-2: drive option (XT only, 0 for others)
  2606.            bit 3:    set if more than 8 heads (AT and later only)
  2607.            bit 4:    always 0
  2608.            bit 5:    set if manufacturer's defect map on max cylinder+1
  2609.                  (AT and later only)
  2610.            bit 6:    disable ECC retries
  2611.            bit 7:    disable access retries
  2612.  09h    BYTE    standard timeout (XT only, 0 for others)
  2613.  0Ah    BYTE    formatting timeout (XT and WD1002 only, 0 for others)
  2614.  0Bh    BYTE    timeout for checking drive (XT and WD1002 only, 0 for others)
  2615.  0Ch    WORD    cylinder number of landing zone (AT and later only)
  2616.  0Eh    BYTE    number of sectors per track (AT and later only)
  2617.  0Fh    BYTE    reserved
  2618. --------h-41---------------------------------
  2619. INT 41 - Z100 - Master 8259 - Processor Swap
  2620. SeeAlso: INT 40"Z100",INT 42"Z100"
  2621. --------O-41---------------------------------
  2622. INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
  2623.     AL = function
  2624.         01h put bytes sequentially
  2625.         02h put bytes, ignoring sequential pointer
  2626.         03h get bytes sequentially
  2627.         04h get bytes, ignoring sequential pointer
  2628.         05h get media title and boot option
  2629.         06h get current device and directory
  2630.         07h get current library and device
  2631.         08h search directory
  2632.     DS:BX -> control block (see below)
  2633. Return: CF clear if successful
  2634.     CF set on error
  2635.     AL = 00h if operation attempted
  2636.     AL unchanged if unsupported function
  2637. SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
  2638.  
  2639. Format of control block:
  2640. Offset    Size    Description
  2641.  00h    BYTE    file handle
  2642.  01h    DWORD    pointer to data in either I/O processor or Tube processor
  2643.  05h    DWORD    number of bytes to be transferred
  2644.  09h    DWORD    transfer address
  2645. --------G-4112-------------------------------
  2646. INT 41 P - MS Windows debugging kernel - "OutputDebugString"
  2647.     AH = 12h
  2648.     ???
  2649. Return: ???
  2650. SeeAlso: AH=50h
  2651. --------G-4150-------------------------------
  2652. INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
  2653.     AH = 50h
  2654.     ???
  2655. Return: ???
  2656. SeeAlso: AH=12h
  2657. --------V-42---------------------------------
  2658. INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
  2659. SeeAlso: INT 10
  2660. Note:    not used by PS/2 built-in VGA or XGA
  2661. --------h-42---------------------------------
  2662. INT 42 - Z100 - Master 8259 - Timer
  2663. SeeAlso: INT 41"Z100",INT 43"Z100"
  2664. --------b-42---------------------------------
  2665. INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
  2666. Note:    if the second WD1002 controller in the system finds INT 40 already in
  2667.       use, it uses this vector to cascade to the first controller's BIOS
  2668. SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
  2669. --------O-42---------------------------------
  2670. INT 42 - Acorn BBS Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
  2671.     AL = byte to be written
  2672.     BH = file handle
  2673. Return: flags destroyed
  2674. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  2675. --------V-43---------------------------------
  2676. INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
  2677.    points at graphics data for characters 00h-7Fh of the current font
  2678. SeeAlso: INT 1F,INT 44"VIDEO"
  2679. --------h-43---------------------------------
  2680. INT 43 - Z100 - Master 8259 - Slave 8259 input
  2681. Note:    slave runs in special fully nested mode
  2682. SeeAlso: INT 42"Z100",INT 44"Z100"
  2683. --------O-43---------------------------------
  2684. INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
  2685.     BH = file handle
  2686. Return: CF clear if successful
  2687.         AL = byte read from file
  2688.     CF set on error
  2689. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
  2690. --------V-44---------------------------------
  2691. INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
  2692.    points at graphics data for current character font
  2693. SeeAlso: INT 1F,INT 43"VIDEO"
  2694. --------N-44---------------------------------
  2695. INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
  2696. --------I-44---------------------------------
  2697. INT 44 - IBM 3270-PC High Level Language API
  2698.     DS:SI -> parameter control block
  2699. --------h-44---------------------------------
  2700. INT 44 - Z100 - Master 8259 - Serial A
  2701. SeeAlso: INT 43"Z100",INT 45"Z100"
  2702. --------v-44---------------------------------
  2703. INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
  2704. SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
  2705. --------O-4400-------------------------------
  2706. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  2707.     AH = 00h
  2708.     AL = function
  2709.         00h get current filing system
  2710.         Return: AL = filing system (see below)
  2711.         01h get address of commandline tail
  2712.         Return: BX buffer filled with address of command tail in I/O
  2713.                 processor address space (use INT 4A/AL=05h to
  2714.                 retrieve)
  2715.         FFh flush all files onto secondary storage
  2716.     BX -> 4-byte data buffer
  2717. Note:    the commandline tail is terminated with a carriage return (0Dh)
  2718. SeeAlso: INT 40"Acorn",INT 45"Acorn"
  2719.  
  2720. Values for filing system:
  2721.  00h    none
  2722.  01h    1200 bps cassette
  2723.  02h    300 bps cassette
  2724.  03h    ROM FS
  2725.  04h    DFS
  2726.  05h    ANFS/NFS
  2727.  06h    TFS
  2728.  08h    ADFS
  2729. --------O-44---------------------------------
  2730. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  2731.     AH = nonzero file handle
  2732.         AL = function
  2733.         00h get sequential pointer for file
  2734.         01h set sequential pointer for file
  2735.         02h get length of file
  2736.     BX -> 4-byte data buffer
  2737. Return: BX buffer updated if appropriate
  2738. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
  2739. --------h-45---------------------------------
  2740. INT 45 - Z100 - Master 8259 - Serial B
  2741. SeeAlso: INT 44"Z100",INT 46"Z100"
  2742. --------O-45---------------------------------
  2743. INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
  2744.     AL = function
  2745.         00h save block of memory as file
  2746.         01h update directory entry for existing file
  2747.         02h set load address for existing file
  2748.         03h set execution address for existing file
  2749.         04h set attributes for existing file
  2750.         05h read directory
  2751.         06h delete file
  2752.         FFh load file
  2753.     DS:BX -> control block (see below)
  2754. Return: FLAGS destroyed
  2755.     AL = file type
  2756.         00h not found
  2757.         01h file found
  2758.         02h directory found
  2759.         FFh protected file
  2760. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
  2761.  
  2762. Format of control block:
  2763. Offset    Size    Description
  2764.  00h    WORD    address of CR-terminated filename
  2765.  02h    DWORD    load address of file
  2766.  06h    DWORD    execution address of file
  2767.  0Ah    DWORD    start address of data to save
  2768.  0Eh    DWORD    end address of data to save, or file attributes
  2769.         file attributes in low byte (see below)
  2770.         other three bytes are filing-system specific file attributes
  2771.  
  2772. Bitfields for file attributes:
  2773.  bit 0    no owner read access
  2774.  bit 1    no owner write access
  2775.  bit 2    not executable by owner
  2776.  bit 3    not deletable by owner
  2777.  bit 4    no public read access
  2778.  bit 5    no public write access
  2779.  bit 6    not executable with public access
  2780.  bit 7    not deletable with public access
  2781. --------B-46---------------------------------
  2782. INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
  2783. SeeAlso: INT 13/AH=09h,INT 41
  2784. --------h-46---------------------------------
  2785. INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
  2786. SeeAlso: INT 45"Z100",INT 47"Z100"
  2787. --------O-46---------------------------------
  2788. INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
  2789. Return: CF clear if successful
  2790.         AL = character read
  2791.     CF set on error
  2792.         AL = error code
  2793. SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  2794. --------h-47---------------------------------
  2795. INT 47 - Z100 - Master 8259 - Printer
  2796. SeeAlso: INT 46"Z100",INT 48"Z100"
  2797. --------O-47---------------------------------
  2798. INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
  2799.     AL = character to be written
  2800. Return: FLAGS destroyed
  2801. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
  2802. --------b-47---------------------------------
  2803. INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
  2804. Desc:    used by the second WD1002-27X controller to cascade to the first
  2805.       controller's INT 40
  2806. SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
  2807. ----------478000-----------------------------
  2808. INT 47 - SQL Base - DATABASE ENGINE API
  2809.     AX = 8000h
  2810.     DS:BX -> parameter block, first word is function number
  2811. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  2812. SeeAlso: AX=8001h
  2813.  
  2814. Values for function number:
  2815.  01h    "SQLFINI" initalialize application's use of the database
  2816.  02h    "SQLFDON" application is done using the database
  2817.  03h    "SQLFCON" connect to a cursor/database
  2818.  04h    "SQLFDIS" disconnect from a cursor/database
  2819.  05h    "SQLFCOM" compile a SQL command
  2820.  06h    "SQLFEXE" execute a SQL command
  2821.  07h    "SQLFCEX" compile and execute a SQL command
  2822.  08h    "SQLFCMT" commit a transaction to the database
  2823.  09h    "SQLFDES" describe the items of a SELECT statement
  2824.  0Ah    "SQLFGFI" get fetch information
  2825.  0Bh    "SQLFFBK" fetch previous result row from SELECT statement
  2826.  0Ch    "SQLFFET" fetch next result row from SELECT statement
  2827.  0Dh    "SQLFEFB" enable fetch backwards
  2828.  0Eh    "SQLFPRS" position in result set
  2829.  0Fh    "SQLFURS" undo result set
  2830.  10h    "SQLFNBV" get number of bind variables
  2831.  11h    "SQLFBND" bind data variables
  2832.  12h    "SQLFBNN" bind numerics
  2833.  13h    "SQLFBLN" bind long number
  2834.  14h    "SQLFBLD" bind long data variables
  2835.  15h    "SQLFSRS" start restriction set processing
  2836.  16h    "SQLFRRS" restart restriction set processing
  2837.  17h    "SQLFCRS" close restriction set
  2838.  18h    "SQLFDRS" drop restriction set
  2839.  19h    "SQLFARF" apply Roll Forward journal
  2840.  1Ah    "SQLFERF" end Roll Forward journal
  2841.  1Bh    "SQLFSRF" start Roll Forward journal
  2842.  1Ch    "SQLFSTO" store a compiled SQL command
  2843.  1Dh    "SQLFRET" retrieve a compiled SQL command
  2844.  1Eh    "SQLFDST" drop a stored command
  2845.  1Fh    "SQLFCTY" get command type
  2846.  20h    "SQLFEPO" get error position
  2847.  21h    "SQLFGNR" get number of rows
  2848.  22h    "SQLFNSI" get number of select items
  2849.  23h    "SQLFRBF" get Roll Back flag
  2850.  24h    "SQLFRCD" get return code
  2851.  25h    "SQLFROW" get number of ROWs
  2852.  26h    "SQLFSCN" set cursor name
  2853.  27h    "SQLFSIL" set isolation level
  2854.  28h    "SQLFSLP" set log parameters
  2855.  29h    "SQLFSSB" set select buffer
  2856.  2Ah    "SQLFSSS" set sort space
  2857.  2Bh    "SQLFRLO" read long
  2858.  2Ch    "SQLFWLO" write long
  2859.  2Dh    "SQLFLSK" long seek
  2860.  2Eh    "SQLFGLS" get long size
  2861.  2Fh    "SQLFELO" end long operation
  2862.  30h    "SQLFRBK" roll back a transaction from the database
  2863.  31h    "SQLFERR" error message
  2864.  32h    "SQLFCPY" copy
  2865.  33h    "SQLFR01" reserved
  2866.  34h    "SQLFSYS" system
  2867.  35h    "SQLFSTA" statistics
  2868.  36h    "SQLFR02" reserved
  2869.  37h    "SQLFXAD" extra add
  2870.  38h    "SQLFXCN" extra character to number
  2871.  39h    "SQLFXDA" extra date add
  2872.  3Ah    "SQLFXDP" extra date picture
  2873.  3Bh    "SQLFXDV" extra divide
  2874.  3Ch    "SQLFXML" extra multiply
  2875.  3Dh    "SQLFXNP" extra number picture
  2876.  3Eh    "SQLFXPD" extra picture date
  2877.  3Fh    "SQLFXSB" extra subtract
  2878.  40h    "SQLFINS" install database
  2879.  41h    "SQLFDIN" deinstall database
  2880.  42h    "SQLFDIR" directory of databases
  2881.  43h    "SQLFTIO" timeout
  2882.  44h    "SQLFFQN" get fully qualified column name
  2883.  45h    "SQLFEXP" explain execution plan
  2884.  46h    "SQLFFER" get full error
  2885.  47h    "SQLFBKP" begin online backup
  2886.  48h    "SQLFRDC" read backup data chunk
  2887.  49h    "SQLFEBK" end backup
  2888.  4Ah    "SQLFRES" begin restore from backup
  2889.  4Bh    "SQLFWDC" write backup data chunk for restore
  2890.  4Ch    "SQLFRRD" recover restored database to consistent state
  2891.  4Dh    "SQLFERS" end restore
  2892.  4Eh    "SQLFNRR" return number of result set rows
  2893.  4Fh    "SQLFSTR" start restriction mode
  2894.  50h    "SQLFSPR" stop restriction mode
  2895.  51h    "SQLFCNC" connect 2
  2896.  52h    "SQLFCNR" connect with no recovery
  2897.  53h    "SQLFOMS" set output message size
  2898.  54h    "SQLFIMS" set input message size
  2899.  55h    "SQLFSCP" set cache pages
  2900.  56h    "SQLFDSC" describe items of a SELECT statement (external)
  2901.  57h    "SQLFLAB" get label info for items in SELECT statement
  2902.  58h    "SQLFCBV" clear bind variables
  2903.  59h    "SQLFGET" get database information
  2904.  5Ah    "SQLFSET" set database information
  2905.  5Bh    "SQLFTEC" translate error code
  2906. ----------478001-----------------------------
  2907. INT 47 - SQL Base - GET VERSION NUMBER
  2908.     AX = 8001h
  2909. Return: ???
  2910. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  2911. SeeAlso: AX=8000h
  2912. --------B-48---------------------------------
  2913. INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
  2914. SeeAlso: INT 49"PCjr"
  2915. --------h-48---------------------------------
  2916. INT 48 - Z100 - Slave 8259 - S100 vectored line 0
  2917. SeeAlso: INT 47"Z100",INT 49"Z100"
  2918. --------N-48---------------------------------
  2919. INT 48 - Watstar PC Network data pointer 1
  2920. SeeAlso: INT 49"Watstar"
  2921. --------O-48---------------------------------
  2922. INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
  2923. Return: FLAGS destroyed
  2924. Note:    writes a carriage return (0Dh) followed by a linefeed (0Ah)
  2925. SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
  2926. --------b-48---------------------------------
  2927. INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
  2928. Note:    the second WD1002-27X controller in a system uses the low byte to
  2929.       store the number of drives controlled by the second controller,
  2930.       and the high word for temporary storage during track recalculation;
  2931.       the first controller uses offsets 74h-77h in the BIOS data area
  2932.       (see MEMORY.LST) to store data
  2933. SeeAlso: INT 47"SuperBIOS"
  2934. ----------48---------------------------------
  2935. INT 48 U - Compaq UILIB.EXE - API
  2936.     AX = function (see below)
  2937.     BX = call type (0002h) (see AX=1A70h)
  2938.     ???
  2939. Return: ???
  2940. Note:    returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
  2941.       listed below
  2942. SeeAlso: AX=1A70h
  2943.  
  2944. Values for function:
  2945.  1000h    1160h    12D0h    1430h    1570h    1680h    17F0h    1920h    1A90h
  2946.  1010h    1170h    12E0h    1440h    1578h    1690h    1800h    1930h    1AA0h
  2947.  1020h    1180h    12F0h    1450h    1580h    16A0h    1810h    1940h
  2948.  1030h    1190h    1300h    1460h    1590h    16B0h    1820h    1950h
  2949.  1040h    11A0h    1310h    1470h    1594h    16C0h    1830h    1960h
  2950.  1050h    11B0h    1320h    1480h    1598h    16D0h    1840h    1970h
  2951.  1060h    11C0h    1330h    1490h    15A0h    16E0h    1848h    1980h
  2952.  1070h    11D0h    1340h    14A0h    15B0h    16F0h    1850h    1990h
  2953.  1080h    11E0h    1350h    14B0h    15C0h    1700h    1860h    19A0h
  2954.  1090h    11F0h    1360h    14B8h    15D0h    1710h    1870h    19B0h
  2955.  1095h    1200h    1370h    14BBh    15D4h    1720h    1878h    19C0h
  2956.  1098h    1210h    1380h    14C0h    15D8h    1730h    1880h    19D0h
  2957.  10A0h    1220h    1390h    14D0h    15E0h    1735h    1890h    19E0h
  2958.  10C0h    1230h    13A0h    14E0h    15F0h    1740h    1898h    19F0h
  2959.  10D0h    1240h    13B0h    14F0h    1600h    1750h    18A0h    1A00h
  2960.  10E0h    1250h    13B8h    1500h    1610h    1770h    18B0h    1A10h
  2961.  10F0h    1260h    13C0h    1508h    1620h    1780h    18C0h    1A20h
  2962.  1100h    1270h    13D0h    1510h    1630h    1790h    18D0h    1A30h
  2963.  1110h    1280h    13E0h    1520h    1640h    17A0h    18E0h    1A40h
  2964.  1120h    1290h    13F0h    1530h    1650h    17B0h    18F0h    1A50h
  2965.  1130h    12A0h    1400h    1540h    1660h    17C0h    1900h    1A60h
  2966.  1140h    12B0h    1410h    1550h    1664h    17D0h    1909h    1A70h
  2967.  1150h    12C0h    1420h    1560h    1670h    17E0h    1910h    1A80h
  2968. ----------481A70-----------------------------
  2969. INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
  2970.     AX = 1A70h
  2971.     BX = call type (see below)
  2972. Return: CX = 5649h ('VI') if installed
  2973.     DX = 4557h ('EW') if installed
  2974.         AX = version??? (0106h)
  2975.  
  2976. Values for call type:
  2977.  0000h    near
  2978.  0001h    far
  2979.  0002h    INT (only valid call type when using INT 48)
  2980.  0003h    near
  2981. --------B-49---------------------------------
  2982. INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
  2983. SeeAlso: INT 48"PCjr"
  2984.  
  2985. Format of translation table:
  2986. Offset    Size    Description
  2987.  00h    BYTE    number of nonkeyboard scancodes in the table
  2988.  01h  N WORDs    high byte 00h (NUL) byte scancode with low order byte
  2989.         representing the scancode mapped values relative to their
  2990.         input values within the range of 56h through 7Eh
  2991. --------h-49---------------------------------
  2992. INT 49 - Z100 - Slave 8259 - S100 vectored line 1
  2993. SeeAlso: INT 48"Z100",INT 4A"Z100"
  2994. ----------49---------------------------------
  2995. INT 49 - Texas Instruments PC - VIDEO I/O???
  2996.     apparently provides direct video display on the TI Professional PC
  2997. --------N-49---------------------------------
  2998. INT 49 - Watstar PC Network data pointer 2
  2999. SeeAlso: INT 49"Watstar"
  3000. --------O-49---------------------------------
  3001. INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
  3002.     AL = character to be written
  3003. Return: FLAGS destroyed
  3004. Note:    converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
  3005. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
  3006. --------a-490001-----------------------------
  3007. INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
  3008.     AX = 0001h
  3009. Return: AX = status (see below)
  3010.     BX,CX,DX destroyed
  3011. Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
  3012.       providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
  3013. Note:    INT 49 is the default, but may be overridden on the commandline.  The
  3014.       actual interrupt in use may be found by searching for the signature
  3015.       "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
  3016.       the interrupt handler (this is also the installation check).    MAGic
  3017.       uses CodeRunneR, which places the signature "RT" at offset 0000h in
  3018.       the interrupt handler's segment, followed by MAGic's TSR ID of
  3019.       "VMAG".
  3020. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0008h
  3021. Index:    installation check;MAGic
  3022.  
  3023. Values for status:
  3024.  0000h    cannot magnify current video mode
  3025.  0002h    magnified (text mode)
  3026.  0003h    magnified (graphics mode)
  3027.  FFFDh    function works only in magnified mode
  3028.  FFFFh    MAGic busy, retry later
  3029. --------a-490002-----------------------------
  3030. INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
  3031.     AX = 0002h
  3032. Return: AX = status (see AX=0001h)
  3033.     BX,CX,DX destroyed
  3034. SeeAlso: AX=0001h
  3035. --------a-490003-----------------------------
  3036. INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
  3037.     AX = 0003h
  3038.     BX = vertical position (character row [text] or pixel row [graphics])
  3039.     DX = horizontal position (char column [text] or 8-pixel units [gr])
  3040. Return: AX = status
  3041.         0000h successful
  3042.         FFFFh MAGic busy, retry later
  3043.     BX,CX,DX destroyed
  3044. Note:    window is not moved if the position is inside the current window
  3045. SeeAlso: AX=0001h,AX=0004h,AX=0005h
  3046. --------a-490004-----------------------------
  3047. INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
  3048.     AX = 0004h
  3049.     BX = vertical position of upper left corner
  3050.     DX = horizontal position
  3051. Return: AX = status (see AX=0003h)
  3052.     BX,CX,DX destroyed
  3053. SeeAlso: AX=0001h,AX=0003h,AX=0005h
  3054. --------a-490005-----------------------------
  3055. INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
  3056.     AX = 0005h
  3057. Return: AX = status
  3058.         0000h successful
  3059.         BX = vertical position (char row or pixel row)
  3060.         DX = horizontal position (char column or 8-pixel units)
  3061.         FFFFh MAGic busy, retry later
  3062.         BX,DX destroyed
  3063.     CX destroyed
  3064. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
  3065. --------a-490006-----------------------------
  3066. INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
  3067.     AX = 0006h
  3068. Return: AX = status
  3069.         0000h successful
  3070.         BX = vertical size (char rows or pixel rows)
  3071.         DX = horizontal size (char cols or 8-pixel units)
  3072.         FFFFh MAGic busy, retry later
  3073.         BX,DX destroyed
  3074.     CX destroyed
  3075. SeeAlso: AX=0001h,AX=0005h,AX=0007h
  3076. --------a-490007-----------------------------
  3077. INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
  3078.     AX = 0007h
  3079. Return: AX = status
  3080.         0000h successful
  3081.         BX = vertical size (char rows or pixel rows)
  3082.         DX = horizontal size (char cols or 8-pixel units)
  3083.         FFFEh invalid function
  3084.         FFFFh MAGic busy, retry later
  3085.         BX,DX destroyed
  3086.     CX destroyed
  3087. BUG:    in v1.16 and v1.17, this function is not recognized as valid, but
  3088.       AX=0000h is accepted and will branch into hyperspace
  3089. SeeAlso: AX=0001h,AX=0006h
  3090. --------a-490008-----------------------------
  3091. INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
  3092.     AX = 0008h
  3093.     BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
  3094. Return: AX = status
  3095.         0000h successful
  3096.         FFFBh scaling factor only available in MAGic Deluxe
  3097.         FFFCh already in magnified state, can't set size
  3098. Notes:    this call specifies the amount a subsequent call to AX=0001h should
  3099.       magnify the display
  3100.     scaling factors greater than 2 are only available in MAGic Deluxe
  3101. SeeAlso: AX=0001h
  3102. --------B-4A---------------------------------
  3103. INT 4A C - SYSTEM - USER ALARM HANDLER
  3104. Desc:    This interrupt is invoked by the BIOS when a real-time clock alarm
  3105.       occurs; an application may use it to perform an action at a
  3106.       predetermined time.
  3107. Note:    this interrupt is called from within a hardware interrupt handler,
  3108.       so all usual precautions against reentering DOS must be taken
  3109. SeeAlso: INT 1A/AH=06h
  3110. --------h-4A---------------------------------
  3111. INT 4A - Z100 - Slave 8259 - S100 vectored line 2
  3112. SeeAlso: INT 49"Z100",INT 4B"Z100"
  3113. --------O-4A---------------------------------
  3114. INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
  3115.     AL = function code
  3116.         FAh transfer data between 80186 and 65C12 I/O processor
  3117.     DS:BX -> control block (see below)
  3118. Return: FLAGS destroyed
  3119.     control block updated
  3120. Note:    there are more functions than are listed here, but details are not
  3121.       available
  3122. SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
  3123.  
  3124. Format of control block for function FAh:
  3125. Offset    Size    Description
  3126.  00h    BYTE    number of parameters sent to I/O processor (0Dh,0Eh)
  3127.  01h    BYTE    number of parameters read from I/O processor (01h)
  3128.  02h    DWORD    I/O processor address
  3129.  06h    DWORD    80186 segment:offset address
  3130.  0Ah    WORD    number of bytes to transfer
  3131.  0Ch    BYTE    operation type
  3132.         00h write to 65C12 at 24 us/byte
  3133.         01h read from 65C12 at 24 us/byte
  3134.         02h write to 65C12 at 26 us/word
  3135.         03h read from 65C12 at 26 us/word
  3136.         04h write to 65C12 at 10 us/byte using 256-byte blocks
  3137.         05h read from 65C12 at 10 us/byte using 256-byte blocks
  3138.  0Dh    BYTE    65C12 memory access control (only used if offset 00h = 0Eh)
  3139.         bit 7: unused
  3140.         bit 6: always use main screen memory if I/O addr 3000h-7FFFh
  3141.             (overrides bit 5)
  3142.         bit 5: use shadow screen memory if screen address specified
  3143.         bit 4: use current ROM rather than ROM selected by bits 3-0
  3144.             (only if I/O address between 8000h and BFFFh)
  3145.         bits 3-0: paged ROM number
  3146. --------h-4B---------------------------------
  3147. INT 4B - Z100 - Slave 8259 - S100 vectored line 3
  3148. SeeAlso: INT 4A"Z100",INT 4C"Z100"
  3149. --------d-4B---------------------------------
  3150. INT 4B - Common Access Method SCSI interface (draft revision 1.9)
  3151.     ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
  3152. Notes:    the CAM committee moved the interface to INT 4F after revision 1.9
  3153.       to avoid conflicting with the IBM SCSI interface and the Virtual
  3154.       DMA specification
  3155.     the installation check for the driver is the string "SCSI_CAM" eight
  3156.       bytes past the INT 4Bh handler
  3157.     it is not known whether any drivers actually implemented this
  3158.       interface on INT 4B instead of INT 4F
  3159. SeeAlso: INT 4F/AX=8100h
  3160. Index:    installation check;Common Access Method SCSI interface
  3161. --------O-4B---------------------------------
  3162. INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
  3163.     AL = function code
  3164.     BL = first parameter
  3165.     BH = second parameter (if needed)
  3166. Return: BL = first return parameter
  3167.     BH = second return parameter
  3168.     CF depends on function
  3169. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
  3170. --------d-4B80-------------------------------
  3171. INT 4B - IBM SCSI interface
  3172.     AH = 80h
  3173.     details not yet available
  3174. --------d-4B8102DX0000-----------------------
  3175. INT 4B - Virtual DMA Specification (VDS) - GET VERSION
  3176.     AX = 8102h
  3177.     DX = 0000h
  3178. Return: CF clear if successful
  3179.         AH = major version number
  3180.         AL = minor version number
  3181.         BX = product number (see below)
  3182.         CX = product revision number
  3183.         always 0000h for QMAPS and HPMM.SYS
  3184.         always 0001h for Microsoft's EMM386.EXE v4.20-4.41
  3185.         SI:DI = maximum DMA buffer size
  3186.         DX = flags
  3187.         bit 0: PC/XT bus (DMA in first megabyte only)
  3188.         bit 1: physical buffer/remap region in first megabyte
  3189.         bit 2: automatic remap enabled
  3190.         bit 3: all memory is physically contiguous
  3191.         bits 4-15 reserved (zero)
  3192.     CF set on error
  3193.         AL = error code (see below)
  3194. Note:    bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
  3195.       apparently not always the case
  3196. SeeAlso: INT 2C/AX=002Bh,INT 31
  3197. Index:    installation check;Virtual DMA Spec
  3198.  
  3199. Values for product number:
  3200.  0000h    for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
  3201.  0001h    for Microsoft's EMM386.EXE
  3202.  0003h    for Windows 3.x WIN386.EXE
  3203.  0EDCh    for DR-DOS 6.0 EMM386.SYS
  3204.  4560h    ("E`") for Qualitas' 386MAX
  3205.  4D43h    ("MC") for V Communication's Memory Commander
  3206.  5145h    ("QE") for Quarterdeck's QEMM-386
  3207.  524Dh    ("RM") for Helix's Netroom RM386
  3208.  
  3209. Values for error code:
  3210.  01h    region not in contiguous memory
  3211.  02h    region crossed a physical alignment boundary
  3212.  03h    unable to lock pages
  3213.  04h    no buffer available
  3214.  05h    region too large for buffer
  3215.  06h    buffer currently in use
  3216.  07h    invalid memory region
  3217.  08h    region was not locked
  3218.  09h    number of physical pages greater than table length
  3219.  0Ah    invalid buffer ID
  3220.  0Bh    copy out of buffer range
  3221.  0Ch    invalid DMA channel number
  3222.  0Dh    disable count overflow
  3223.  0Eh    disable count underflow
  3224.  0Fh    function not supported
  3225.  10h    reserved flag bits set in DX
  3226.  
  3227. Format of DMA descriptor structure (DDS):
  3228. Offset    Size    Description
  3229.  00h    DWORD    region size
  3230.  04h    DWORD    offset
  3231.  08h    WORD    segment/selector
  3232.  0Ah    WORD    buffer ID
  3233.  0Ch    DWORD    physical address
  3234.  
  3235. Format of Extended DMA descriptor structure (EDDS):
  3236. Offset    Size    Description
  3237.  00h    DWORD    region size
  3238.  04h    DWORD    offset
  3239.  08h    WORD    segment/selector
  3240.  0Ah    WORD    reserved
  3241.  0Ch    WORD    number available
  3242.  0Eh    WORD    number used
  3243.  10h    DWORD    region 0 physical address
  3244.  14h    DWORD    region 0 size in bytes
  3245.  18h    DWORD    region 1 physical address
  3246.  1Ch    DWORD    region 1 size in bytes
  3247.     ...
  3248.  
  3249. Format of Extended DMA descriptor structure (EDDS) with page table entries:
  3250. Offset    Size    Description
  3251.  00h    DWORD    region size
  3252.  04h    DWORD    offset
  3253.  08h    WORD    segment/selector
  3254.  0Ah    WORD    reserved
  3255.  0Ch    WORD    number available
  3256.  0Eh    WORD    number used
  3257.  10h    DWORD    page table entry 0 (same as 80386 page table entry)
  3258.  14h    DWORD    page table entry 1
  3259.     ...
  3260. Note:    bits 1-11 of the page table entries should be zero; bit 0 set if page
  3261.       is present and locked
  3262. --------d-4B8103-----------------------------
  3263. INT 4B - Virtual DMA Specification - LOCK DMA REGION
  3264.     AX = 8103h
  3265.     DX = flags (see below)
  3266.     ES:DI -> DMA descriptor structure (see AX=8102h)
  3267. Return: CF clear if successful
  3268.         DDS physical address field filled in
  3269.         DDS buffer ID field filled (0000h if no buffer allocated)
  3270.     CF set on error
  3271.         AL = error code (see AX=8102h)
  3272.         DDS region size field filled wth maximum contiguous length in bytes
  3273. BUGS:    Windows 3.0 does not correctly support automatic remapping or copying
  3274.       in enhanced mode
  3275.     Windows 3.0 in enhanced mode does not return a correct code on error
  3276. SeeAlso: AX=8104h,AX=8105h
  3277.  
  3278. Bitfields for flags:
  3279.  bit 0    reserved (zero)
  3280.  bit 1    data should be copied into buffer (ignored if bit 2 set)
  3281.  bit 2    buffer should not be allocated if region noncontiguous or crosses
  3282.     physical alignment boundary specified by bits 4-5
  3283.  bit 3    don't attempt automatic remap
  3284.  bit 4    region must not cross 64K physical alignment boundary
  3285.  bit 5    region must not cross 128K physical alignment boundary
  3286.  bits 6-15 reserved (zero)
  3287. --------d-4B8104-----------------------------
  3288. INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
  3289.     AX = 8104h
  3290.     DX = flags
  3291.         bit 0: reserved (zero)
  3292.         bit 1: data should be copied out of buffer
  3293.         bits 2-15 reserved (zero)
  3294.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size,
  3295.         physical address, and buffer ID fields set
  3296. Return: CF clear if successful
  3297.         DDS physical address field set
  3298.         DDS buffer ID field set (0000h if no buffer allocated)
  3299.     CF set on error
  3300.         AL = error code (see AX=8102h)
  3301.         DDS region size field filled wth maximum contiguous length in bytes
  3302. Note:    Windows 3.0 does not check whether the region extends beyond the end of
  3303.       a segment
  3304. BUG:    Windows 3.0 in enhanced mode does not return a correct code on error
  3305. SeeAlso: AX=8103h,AX=8106h
  3306. --------d-4B8105-----------------------------
  3307. INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
  3308.     AX = 8105h
  3309.     DX = flags
  3310.         bits 0-5 reserved (zero)
  3311.         bit 6: EDDS should be returned with page table entries
  3312.         bit 7: only present pages should be locked (not-present pages
  3313.             receive entry of 0000h)
  3314.         bits 8-15 reserved (zero)
  3315.     ES:DI -> Extended DMA descriptor structure (see AX=8102h)
  3316.         region size, linear segment, linear offset, and number avail
  3317.         fields set
  3318. Return: CF clear if successful
  3319.         EDDS number used field set
  3320.         if DX bit 6 set, lower 12 bits of BX = offset in first page
  3321.     CF set on error
  3322.         AL = error code (see AX=8102h)
  3323.         EDDS region size field filled with max length in bytes that can be
  3324.         locked and described in the EDDS table
  3325. BUG:    Windows 3.0 in enhanced mode may return zero instead of the physical
  3326.       page address for pages which were originally not present
  3327. SeeAlso: AX=8103h,AX=8106h
  3328. --------d-4B8106-----------------------------
  3329. INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
  3330.     AX = 8106h
  3331.     DX = flags
  3332.         bits 0-5 reserved (zero)
  3333.         bit 6: EDDS contains page table entries
  3334.         bit 7: EDDS may contain not-present pages (entry = 0000h)
  3335.         bits 8-15 reserved (zero)
  3336.     ES:DI -> Extended DMA descriptor structure (see AX=8102h) returned
  3337.         by AX=8105h
  3338. Return: CF clear if successful
  3339.     CF set on error
  3340.         AL = error code (see AX=8102h)
  3341. Note:    according to the Microsoft version of the VDS specification, the
  3342.       actual scatter/gather list is ignored, while according to the IBM
  3343.       version of the specification, "the result of a LOCK operation"
  3344.       must be provided to this function
  3345. SeeAlso: AX=8104h,AX=8105h
  3346. --------d-4B8107-----------------------------
  3347. INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
  3348.     AX = 8107h
  3349.     DX = flags
  3350.         bit 0: reserved (zero)
  3351.         bit 1: data should be copied into buffer
  3352.         bits  2-15 reserved (zero)
  3353.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size set
  3354.         (also region offset and region segment if DX bit 1 set)
  3355. Return: CF clear if successful
  3356.         DDS physical address and buffer ID set
  3357.         DDS region size filled with length of buffer
  3358.     CF set on error
  3359.         AL = error code (see AX=8102h)
  3360. SeeAlso: AX=8108h
  3361. --------d-4B8108-----------------------------
  3362. INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
  3363.     AX = 8108h
  3364.     DX = flags
  3365.         bit 0: reserved (zero)
  3366.         bit 1: data should be copied out of buffer
  3367.         bits 2-15 reserved (zero)
  3368.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID set
  3369.         (also region size/region offset/segment if DX bit 1 set)
  3370. Return: CF clear if successful
  3371.     CF set on error
  3372.         AL = error code (see AX=8102h)
  3373. BUG:    under Windows 3.0 Enhanced mode, you must specify that data be copied
  3374.       for this function to work correctly
  3375. SeeAlso: AX=8107h
  3376. --------d-4B8109DX0000-----------------------
  3377. INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
  3378.     AX = 8109h
  3379.     DX = 0000h
  3380.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  3381.         region segment/offset, and region size fields set
  3382.     BX:CX = starting offset into DMA buffer
  3383. Return: CF clear if successful
  3384.     CF set on error
  3385.         AL = error code (see AX=8102h)
  3386. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3387. SeeAlso: AX=810Ah
  3388. --------d-4B810ADX0000-----------------------
  3389. INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
  3390.     AX = 810Ah
  3391.     DX = 0000h
  3392.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  3393.         region segment/offset, and region size fields set
  3394.     BX:CX = starting offset into DMA buffer
  3395. Return: CF clear if successful
  3396.     CF set on error
  3397.         AL = error code (see AX=8102h)
  3398. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3399. SeeAlso: AX=8109h
  3400. --------d-4B810B-----------------------------
  3401. INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
  3402.     AX = 810Bh
  3403.     BX = DMA channel number
  3404.     DX = 0000h
  3405. Return: CF clear if successful
  3406.     CF set on error
  3407.         AL = error code (see AX=8102h)
  3408. SeeAlso: AX=810Ch
  3409. --------d-4B810C-----------------------------
  3410. INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
  3411.     AX = 810Ch
  3412.     BX = DMA channel number
  3413.     DX = 0000h
  3414. Return: CF clear if successful
  3415.         ZF set if disable count decremented to zero
  3416.     CF set on error
  3417.         AL = error code (see AX=8102h)
  3418. SeeAlso: AX=810Bh
  3419. --------Q-4B810D-----------------------------
  3420. INT 4B - QEMM-386 - BUG
  3421.     AX = 810Dh
  3422. Note:    the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
  3423.       call
  3424. --------h-4C---------------------------------
  3425. INT 4C - Z100 - Slave 8259 - S100 vectored line 4
  3426. SeeAlso: INT 4B"Z100",INT 4D"Z100"
  3427. --------O-4C---------------------------------
  3428. INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
  3429.     DS:BX -> CR-terminated command string
  3430. Return: FLAGS destroyed
  3431. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
  3432. --------h-4D---------------------------------
  3433. INT 4D - Z100 - Slave 8259 - S100 vectored line 5
  3434. SeeAlso: INT 4C"Z100",INT 4E"Z100"
  3435. --------d-4E---------------------------------
  3436. INT 4E - TI Professional PC - DISK I/O
  3437.     used instead of INT 13 on the TI Professional PC
  3438. SeeAlso: INT 13
  3439. --------h-4E---------------------------------
  3440. INT 4E - Z100 - Slave 8259 - S100 vectored line 6
  3441. SeeAlso: INT 4D"Z100",INT 4F"Z100"
  3442. --------h-4F---------------------------------
  3443. INT 4F - Z100 - Slave 8259 - S100 vectored line 7
  3444. SeeAlso: INT 4E"Z100"
  3445. --------d-4F8100-----------------------------
  3446. INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
  3447.     AX = 8100h
  3448.     ES:BX -> CAM Control Block (CCB) (see below)
  3449. Return: AH = status
  3450.         00h successful
  3451.         01h invalid CCB address (0000h:0000h)
  3452. Note:    the SCSI Interface Module (SIM) may complete the requested function
  3453.       and invoke the completion callback function before this call returns
  3454. SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
  3455.  
  3456. Values for CAM function code:
  3457.  00h    NOP
  3458.  01h    execute SCSI I/O
  3459.  02h    get device type
  3460.  03h    path inquiry
  3461.  04h    release SIM queue
  3462.  05h    set async callback
  3463.  06h    set device type
  3464.  07h-0Fh reserved
  3465.  10h    abort SCSI command
  3466.  11h    reset SCSI bus
  3467.  12h    reset SCSI device
  3468.  13h    terminate I/O process
  3469.  14h-1Fh reserved
  3470.  20h    engine inquiry
  3471.  21h    execute engine request
  3472.  22h-2Fh reserved
  3473.  30h    enable logical unit number
  3474.  31h    execute target I/O
  3475.  32h-7Fh reserved
  3476.  80h-FFh vendor-specific functions
  3477.  
  3478. Format of CAM Control Block:
  3479. Offset    Size    Description
  3480.  00h    DWORD    physical address of this CCB
  3481.  04h    WORD    CAM control block length
  3482.  06h    BYTE    function code (see above)
  3483.  07h    BYTE    CAM status (see below)
  3484.  08h    BYTE    SCSI status
  3485.  09h    BYTE    path ID (FFh = XPT)
  3486.  0Ah    BYTE    target ID
  3487.  0Bh    BYTE    logical unit number
  3488.  0Ch    WORD    CAM flags (see below)
  3489.  0Eh    BYTE    CAM address flags (see below)
  3490.  0Fh    BYTE    target-mode flags (see below)
  3491. ---function 02h---
  3492.  10h    DWORD    pointer to 36-byte buffer for inquiry data or 0000h:0000h
  3493.  14h    BYTE    peripheral device type of target logical unit number
  3494. ---function 03h---
  3495.  10h    BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
  3496.         09h-FFh = rev no, i.e. 23h = rev 2.3)
  3497.  11h    BYTE    SCSI capabilities (see below)
  3498.  12h    BYTE    target mode support
  3499.         bit 7: processor mode
  3500.         bit 6: phase-cognizant mode
  3501.         bit 5-0: reserved
  3502.  13h    BYTE    miscellaneous flags
  3503.         bit 7: scanned high to low instead of low to high
  3504.         bit 6: removables not included in scan
  3505.         bit 5: inquiry data not kept by XPT
  3506.         bits 4-0: reserved
  3507.  14h    WORD    engine count
  3508.  16h 14 BYTEs    vendor-specific data
  3509.  24h    DWORD    size of private data area
  3510.  28h    DWORD    asynchronous event capabilities (see below)
  3511.  2Ch    BYTE    highest path ID assigned
  3512.  2Dh    BYTE    SCSI device ID of initiator
  3513.  2Eh  2 BYTEs    reserved
  3514.  30h 16 BYTEs    SIM vendor ID
  3515.  40h 16 BYTEs    HBA (host bus adaptor) vendor ID
  3516.  50h  4 BYTEs    operating-system dependant usage
  3517. ---functions 00h,04h,11h,12h---
  3518.  no additional fields
  3519. ---function 05h---
  3520.  10h    DWORD    asynchronous event enables (see function 03h above)
  3521.  14h    DWORD    pointer to asynchronous callback routine
  3522.  18h    DWORD    pointer to peripheral driver buffer
  3523.  1Ch    BYTE    size of peripheral buffer
  3524. ---function 06h---
  3525.  10h    BYTE    peripheral device type of target
  3526. ---functions 10h,13h---
  3527.  10h    DWORD    pointer to CCB to be aborted
  3528. ---function 20h---
  3529.  10h    WORD    engine number
  3530.  12h    BYTE    engine type
  3531.         00h buffer memory
  3532.         01h lossless compression
  3533.         02h lossy compression
  3534.         03h encryption
  3535.  13h    BYTE    engine algorithm ID
  3536.         00h vendor-unique
  3537.         01h LZ1 variation 1 (STAC)
  3538.         02h LZ2 variation 1 (HP DCZL)
  3539.         03h LZ2 variation 2 (Infochip)
  3540.  14h    DWORD    engine memory size
  3541. ---function 21h---
  3542.  10h    DWORD    pointer to peripheral driver
  3543.  14h  4 BYTEs    reserved
  3544.  18h    DWORD    OS-dependent request-mapping info
  3545.  1Ch    DWORD    address of completion callback routine
  3546.  20h    DWORD    pointer to scatter/gather list or data buffer
  3547.  24h    DWORD    length of data transfer
  3548.  28h    DWORD    pointer to engine buffer data
  3549.  2Ch  2 BYTEs    reserved
  3550.  2Eh    WORD    number of scatter/gather entries
  3551.  30h    DWORD    maximum destination data length
  3552.  34h    DWORD    length of destination data
  3553.  38h    DWORD    source residual length
  3554.  3Ch 12 BYTEs    reserved
  3555.  48h    DWORD    OS-dependent timeout value
  3556.  4Ch  4 BYTEs    reserved
  3557.  50h    WORD    engine number
  3558.  52h    WORD    vendor-unique flags
  3559.  54h  4 BYTEs    reserved
  3560.  58h  N BYTEs    private data area for SIM
  3561. ---function 30h---
  3562.  10h    WORD    group 6 vendor-unique CDB length
  3563.  12h    WORD    group 7 vendor-unique CDB length
  3564.  14h    DWORD    pointer to target CCB list
  3565.  18h    WORD    number of target CCBs
  3566. ---other functions---
  3567.  10h    DWORD    pointer to peripheral driver
  3568.  14h    DWORD    pointer to next CCB
  3569.  18h    DWORD    OS-dependent request mapping information
  3570.  1Ch    DWORD    address of completion callback routine
  3571.  20h    DWORD    pointer to scatter/gather list or data buffer
  3572.  24h    DWORD    length of data transfer
  3573.  28h    DWORD    pointer to sense info buffer
  3574.  2Ch    BYTE    length of sense info buffer
  3575.  2Dh    BYTE    CDB length
  3576.  2Eh    WORD    number of scatter/gather entries
  3577.  30h  4 BYTEs    reserved
  3578.  34h    BYTE    SCSI status
  3579.  35h  3 BYTEs    reserved
  3580.  38h    DWORD    residual length
  3581.  40h 12 BYTEs    Command Descriptor Block (CDB)
  3582.  44h    DWORD    OS-dependent timeout value
  3583.  48h    DWORD    pointer to message buffer
  3584.  4Ch    WORD    length of message buffer
  3585.  4Eh    WORD    vendor-unique flags
  3586.  50h    BYTE    tag queue action
  3587.  51h  3 BYTEs    reserved
  3588.  54h  N BYTEs    private data area for SIM
  3589.  
  3590. Bitfields for CAM flags:
  3591.  bit 0    CDB is a pointer
  3592.  bit 1    tagged queue action enable
  3593.  bit 2    linked CDB
  3594.  bit 3    disable callback on completion
  3595.  bit 4    scatter/gather
  3596.  bit 5    disable autosense
  3597.  bits 7-6 direction (00 reserved, 01 in, 10 out, 11 no data transfer)
  3598.  bits 9-8 reserved
  3599.  bit 10 engine synchronize
  3600.  bit 11 SIM queue freeze
  3601.  bit 12 SIM queue priority
  3602.     1 head insertion
  3603.     0 tail insertion (normal)
  3604.  bit 13 disable synchronous transfers    / exclusive
  3605.  bit 14 initiate synchronous transfers    \ mutually
  3606.  bit 15 disable disconnect
  3607.  
  3608. Bitfields for CAM address flags:
  3609.  bit 7    SG list/data (0 = host, 1 = engine)
  3610.  bit 6    CDB pointer    (bits 6-1: 0=virtual addr, 1=phys addr)
  3611.  bit 5    SG list/data
  3612.  bit 4    sense buffer
  3613.  bit 3    message buffer
  3614.  bit 2    next CCB
  3615.  bit 1    callback on completion
  3616.  bit 0    reserved
  3617.  
  3618. Values for CAM status:
  3619.  00h    request in progress
  3620.  01h    request successful
  3621.  02h    host aborted request
  3622.  03h    unable to abort request
  3623.  04h    request completed with error
  3624.  05h    CAM is busy
  3625.  06h    invalid request
  3626.  07h    invalid path ID
  3627.  08h    no such SCSI device
  3628.  09h    unable to terminate I/O process
  3629.  0Ah    timeout on target selection
  3630.  0Bh    timeout on command
  3631.  0Dh    receive message rejection
  3632.  0Eh    sent/received SCSI bus reset
  3633.  0Fh    detected uncorrectable parity error
  3634.  10h    Autosense request failed
  3635.  11h    no HBA detected
  3636.  12h    data over/underrun
  3637.  13h    bus freed unexpectedly
  3638.  14h    target bus phase sequence failure
  3639.  15h    CCB too small
  3640.  16h    requested capability not available
  3641.  17h    sent bus device reset
  3642.  18h    terminate I/O process
  3643.  38h    invalid LUN
  3644.  39h    invalid target ID
  3645.  3Ah    unimplemented function
  3646.  3Bh    nexus not established
  3647.  3Ch    invalid initiator ID
  3648.  3Dh    received SCSI Command Descriptor Block
  3649.  3Eh    LUN already enabled
  3650.  3Fh    SCSI bus busy
  3651. Note:    bit 6 set to indicate frozen SIM queue
  3652.     bit 7 set to indicate valid autosense
  3653.  
  3654. Bitfields for target-mode flags:
  3655.  bit 7    data buffer valid
  3656.  bit 6    status valid
  3657.  bit 5    message buffer valid
  3658.  bit 4    reserved
  3659.  bit 3    phase-cognizant mode
  3660.  bit 2    target CCB available
  3661.  bit 1    disable autodisconnect
  3662.  bit 0    disable autosave/restore
  3663.  
  3664. Bitfields for SCSI capabilities:
  3665.  bit 7    modify data pointers
  3666.  bit 6    wide bus (32 bits)
  3667.  bit 5    wide bus (16 bits)
  3668.  bit 4    synchronous transfers
  3669.  bit 3    linked commands
  3670.  bit 2    reserved
  3671.  bit 1    tagged queueing
  3672.  bit 0    soft reset
  3673.  
  3674. Bitfields for asynchronous event capabilities:
  3675.  bits 31-24    vendor-specific
  3676.  bits 23-8    reserved
  3677.  bit 7    new devices found during rescan
  3678.  bit 6    SIM module deregistered
  3679.  bit 5    SIM module registered
  3680.  bit 4    sent bus device reset to target
  3681.  bit 3    SCSI AEN
  3682.  bit 2    reserved
  3683.  bit 1    unsolicited reselection
  3684.  bit 0    unsolicited SCSI bus reset
  3685.  
  3686. Completion callback function called with:
  3687.     interrupts disabled
  3688.     ES:BX -> completed CCB
  3689.  
  3690. Asynchronous callback function called with:
  3691.     AH = opcode
  3692.     AL = path ID generating callback
  3693.     DH = target ID causing event
  3694.     DL = LUN causing event
  3695.     CX = data byte count (if applicable)
  3696.     ES:BX -> data buffer (if applicable)
  3697. Return: all registers preserved
  3698. --------d-4F8200CX8765-----------------------
  3699. INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
  3700.     AX = 8200h
  3701.     CX = 8765h
  3702.     DX = CBA9h
  3703. Return: AH = 00h if installed
  3704.         CX = 9ABCh
  3705.         DX = 5678h
  3706.         ES:DI -> "SCSI_CAM"
  3707. SeeAlso: AX=8100h,INT 4B"Common Access Method"
  3708. --------N-50---------------------------------
  3709. INT 50 - TIL Xpert AIM (X.25)
  3710.     AH = function
  3711. --------H-50---------------------------------
  3712. INT 50 - IRQ0 relocated by DESQview
  3713. Notes:    this is the default location for older versions; DESQview v2.26+
  3714.       searches for unused ranges of interrupts and uses the lowest
  3715.       available range in its list for relocating these IRQs and the next
  3716.       lowest for relocating IRQ8-IRQ15
  3717.     a range of eight interrupts starting at a multiple of 8 is considered
  3718.       available if all vectors are identical and it has not been excluded
  3719.       with an /XB:nn commandline switch
  3720.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  3721.       are available, F8h and then 50h are used anyway)
  3722.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  3723.       are available, F8h and then F0h are used anyway)
  3724. SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
  3725. SeeAlso: INT D8"Screen Thief"
  3726. --------H-50---------------------------------
  3727. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  3728. SeeAlso: INT 51"IBM 3278"
  3729. --------H-50---------------------------------
  3730. INT 50 - IRQ0 relocated by OS/2 v1.x
  3731. SeeAlso: INT 51"OS/2"
  3732. --------V-500000-----------------------------
  3733. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
  3734.     AX = 0000h
  3735.     ES:BX -> name string or ES:0000h if none
  3736.     CH,CL = row,column of upper left corner
  3737.     DH,DL = row,column of lower right corner
  3738. Return: AX = window handle or
  3739.         0000h if not installed
  3740.         FFFFh on error
  3741. SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
  3742. --------V-500001-----------------------------
  3743. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
  3744.     AX = 0001h
  3745.     DI = window handle
  3746. SeeAlso: AX=0000h
  3747. --------V-500002-----------------------------
  3748. INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
  3749.     AX = 0002h
  3750.     BL = character
  3751.     BH = attribute
  3752.     DL = column
  3753.     DH = row
  3754.     DI = window handle
  3755. Return: AX = status
  3756.         0000h if successful
  3757.         FFFFh if outside window
  3758. SeeAlso: AX=0000h
  3759. --------l-500002-----------------------------
  3760. INT 50 - PC Thuis Organizer Shell - PLOT TEXT
  3761.     AX = 0002h
  3762.     ES:BX -> text string
  3763.     DH,DL = row,column of upper left corner
  3764.     DI = window handle
  3765. Return: AX = status
  3766.         0000h successful (text fits in window)
  3767.         FFFFh error
  3768. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  3769.       published in the June/July 1990 issue of PC Thuis Power magazine
  3770. --------V-500003-----------------------------
  3771. INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
  3772.     AX = 0003h
  3773.     ES:BX -> text string
  3774.     CX = string length (0000h if ASCIZ string)
  3775.     DL = position (FFh centered, else flush left)
  3776.     DH = starting row
  3777.     DI = window handle
  3778. Return: AX = status
  3779.         0000h successful
  3780.         FFFFh did not fit in window
  3781. --------l-500003-----------------------------
  3782. INT 50 - PC Thuis Organizer Shell - WRITE FILE
  3783.     AX = 0003h
  3784.     ES:BX -> data to be written
  3785.     CX = number of bytes to write
  3786.     DS:SI -> filename
  3787. Return: AX = status
  3788.         0000h successful
  3789.         FFFFh error
  3790. SeeAlso: AX=0004h"Shell"
  3791. --------V-500004-----------------------------
  3792. INT 50 - Vanderaart TEXT WINDOWS - GET KEY
  3793.     AX = 0004h
  3794.     CH = type
  3795.         00h any key
  3796.         01h 'J' or 'N' (Dutch for yes/no)
  3797. Return: AX = key
  3798. SeeAlso: INT 16/AH=00h
  3799. --------l-500004-----------------------------
  3800. INT 50 - PC Thuis Organizer Shell - READ FILE
  3801.     AX = 0004h
  3802.     ES:BX -> buffer for data
  3803.     CX = number of bytes to read or 0000h for entire file
  3804.     DL = file type
  3805.         01h setting shell
  3806.         02h setting sterm
  3807.         03h INT21 file
  3808.     DS:SI -> filename
  3809. Return: AX = status
  3810.         0000h successful
  3811.         FFFFh error
  3812. Note:    file type numbers are maintained by John Vanderaart; if a new file type
  3813.       is needed, a type number should be requested from him through the
  3814.       magazine:
  3815.         PC Thuis BV
  3816.         Spaarne 55
  3817.         2011 CE HAARLEM
  3818.         The Netherlands
  3819. SeeAlso: AX=0003h"Shell"
  3820. --------V-500005-----------------------------
  3821. INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
  3822.     AX = 0005h
  3823.     BL = new attribute
  3824.     CH,CL = row,column of upper left corner
  3825.     DH,DL = row,column of lower right corner
  3826.     DI = window handle
  3827. --------l-500005-----------------------------
  3828. INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
  3829.     AX = 0005h
  3830.     ES:BX -> prompt string (ES:0000h if no prompt)
  3831. Return: AX = key pressed
  3832.         0000h "J" (Dutch "Ja" = "Yes")
  3833.         FFFFh "N" (Dutch "Nee" = "No")
  3834. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  3835.       published in the June/July 1990 issue of PC Thuis Power magazine
  3836. SeeAlso: AX=0008h"PC Thuis"
  3837. --------V-500006-----------------------------
  3838. INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
  3839.     AX = 0006h
  3840.     ES:BX -> text string
  3841.     CH = type of input (see below)
  3842.     DH,DL = row,column of upper left corner
  3843.     DI = window handle
  3844. Return: AX = key which terminated entry
  3845.         0000h Enter
  3846.         0001h Esc
  3847.         0002h Down arrow
  3848.         0003h Up arrow
  3849.         0004h F10
  3850.  
  3851. Values for type of input:
  3852.  00h    everything
  3853.  01h    uppercase only
  3854.  02h    positive numbers
  3855.  03h    Dutch postal code ("9999 AA")
  3856.  04h    'J' or 'N' (Dutch yes/no)
  3857.  05h    telephone or FAX number
  3858.  06h    positive or negative number
  3859.  07h    date (dd/mm/yy)
  3860.  08h    money
  3861.  09h    '1' through '8'
  3862.  0Ah    '1' through '4'
  3863.  0Bh    uppercase filenames
  3864. --------l-500006-----------------------------
  3865. INT 50 - PC Thuis Organizer Shell - ALERT USER
  3866.     AX = 0006h
  3867.     ES:BX -> string
  3868. --------l-500007-----------------------------
  3869. INT 50 - PC Thuis Organizer Shell - DO LINE
  3870.     AX = 0007h
  3871.     ES:BX -> text string
  3872.     CX = string length in bytes (0000h if NUL-terminated)
  3873.     DL = FFh to center string, else flush left
  3874.     DH = upper left row
  3875.     DI = window handle
  3876. Return: AX = status
  3877.         0000h successful
  3878.         FFFFh error
  3879. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  3880.       published in the June/July 1990 issue of PC Thuis Power magazine
  3881. SeeAlso: AX=0008h
  3882. --------l-500008-----------------------------
  3883. INT 50 - PC Thuis Organizer Shell - DO MENU
  3884.     AX = 0008h
  3885.     ES:BX -> menu structure
  3886. Return: AL = index 1 or FFh if not selected
  3887.     AH = index 2 or FFh if not selected
  3888.     BL = index 3 or FFh if not selected
  3889.     BH = index 4 or FFh if not selected
  3890. SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
  3891. --------l-500009-----------------------------
  3892. INT 50 - PC Thuis Organizer Shell - MESSAGE ON
  3893.     AX = 0009h
  3894.     ES:BX -> message string
  3895. SeeAlso: AX=000Ah
  3896. --------l-50000A-----------------------------
  3897. INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
  3898.     AX = 000Ah
  3899. SeeAlso: AX=0009h
  3900. --------l-50000B-----------------------------
  3901. INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
  3902.     AX = 000Bh
  3903.     BL = new attribute
  3904.     CH,CL = row,column of upper left corner
  3905.     DH,DL = row,column of lower right corner
  3906.     DI = window handle
  3907. --------l-50000C-----------------------------
  3908. INT 50 - PC Thuis Organizer Shell - DO REQUEST
  3909.     AX = 000Ch
  3910.     ES:BX -> request structure
  3911. Return: AX = status
  3912.         0000h confirmed
  3913.         FFFFh denied
  3914. SeeAlso: AX=0008h
  3915. --------l-50000D-----------------------------
  3916. INT 50 - PC Thuis Organizer Shell - EDIT LINE
  3917.     AX = 000Dh
  3918.     ES:BX -> text string
  3919.     CL = length
  3920.     CH = type
  3921.         bit 0: force uppercase
  3922.         bit 1: integer
  3923.         bit 2: no spaces allowed
  3924.         bit 3: no cursor keys
  3925.     DH,DL = row,column of upper left corner
  3926.     DI = window handle
  3927. Return: AX = result code
  3928. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  3929.       published in the June/July 1990 issue of PC Thuis Power magazine
  3930. --------l-50000E-----------------------------
  3931. INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
  3932.     AX = 000Eh
  3933.     BL = character
  3934.     BH = attribute
  3935.     DH,DL = row,column at which to plot
  3936.     DI = window handle
  3937. Return: AX = status
  3938.         0000h successful
  3939.         FFFFh errror
  3940. --------l-50000F-----------------------------
  3941. INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
  3942.     AX = 000Fh
  3943.     BL = character
  3944.     BH = attribute
  3945.     DI = window handle
  3946. --------l-500010-----------------------------
  3947. INT 50 - PC Thuis Organizer Shell - TRACE MENU
  3948.     AX = 0010h
  3949.     ES:BX -> first menu structure
  3950.     CL = hotkey to look up
  3951. Return: AL = index 1 or FFh if not selected
  3952.     AH = index 2 or FFh if not selected
  3953.     BL = index 3 or FFh if not selected
  3954.     BH = index 4 or FFh if not selected
  3955. Index:    hotkeys;PC Thuis Organizer Shell
  3956. --------l-500011-----------------------------
  3957. INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
  3958.     AX = 0011h
  3959.     DS:SI -> source
  3960.     ES:DI -> destination
  3961.     CX = number of bytes to move (0000h = until NUL string terminator???)
  3962. SeeAlso: AX=0012h
  3963. --------l-500012-----------------------------
  3964. INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
  3965.     AX = 0012h
  3966.     DS:SI -> source
  3967.     ES:DI -> destination
  3968.     CX = number of bytes to compare (0000h=until NUL string terminator???)
  3969. Return: AX = status
  3970.         0000h same
  3971.         FFFFh different
  3972. SeeAlso: AX=0011h
  3973. --------l-500013-----------------------------
  3974. INT 50 - PC Thuis Organizer Shell - GET KEY
  3975.     AX = 0013h
  3976.     CH = type flags
  3977.         bit 0: force uppercase
  3978.         bit 1: integer
  3979.         bit 2: no spaces
  3980. Return: AX = keystroke
  3981. --------l-500014-----------------------------
  3982. INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
  3983.     AX = 0014h
  3984.     BL = direction
  3985.         06h up
  3986.         07h down
  3987.     BH = attribute
  3988.     DI = window handle
  3989. SeeAlso: INT 10/AH=06h,INT 10/AH=07h
  3990. --------l-500015-----------------------------
  3991. INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
  3992.     AX = 0015h
  3993.     BL = handle size
  3994.         00h 65536 bytes (64K)
  3995.         01h 65535 bytes (64K-1)
  3996.         02h 32768 bytes (32K)
  3997.         03h 32767 bytes (32K-1)
  3998. Return: AX = segment
  3999. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4000.       published in the June/July 1990 issue of PC Thuis Power magazine
  4001. SeeAlso: INT 21/AH=48h
  4002. --------H-51---------------------------------
  4003. INT 51 - IRQ1 relocated by DESQview
  4004. Note:    this is the default location for older versions; see INT 50"DESQview"
  4005.       for details of interrupt relocation
  4006. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4007. --------H-51---------------------------------
  4008. INT 51 - IRQ1 relocated by IBM 3278 emulation control program
  4009. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  4010. --------H-51---------------------------------
  4011. INT 51 - IRQ1 relocated by OS/2 v1.x
  4012. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  4013. --------H-52---------------------------------
  4014. INT 52 - IRQ2 relocated by DESQview
  4015. Note:    this is the default location for older versions; see INT 50"DESQview"
  4016.       for details of interrupt relocation
  4017. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4018. --------H-52---------------------------------
  4019. INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4020. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4021. --------H-53---------------------------------
  4022. INT 53 - IRQ3 relocated by DESQview
  4023. Note:    this is the default location for older versions; see INT 50"DESQview"
  4024.       for details of interrupt relocation
  4025. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4026. --------H-53---------------------------------
  4027. INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4028. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4029. --------N-53---------------------------------
  4030. INT 53 - WEB??? - API
  4031.     BX = function
  4032.         0000h ???
  4033.         AX = ???
  4034.         Return: AX = ???
  4035.         0004h ???
  4036.         0009h ???
  4037.         0015h
  4038.         AX = ???
  4039.         DX = ???
  4040.         0017h
  4041. Return: ???
  4042. Notes:    the installation check consists of looking for the signature "WEBCO"
  4043.       immediately prior to the interrupt handler
  4044.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  4045. Index:    installation check;unknown|installation check;WEBCO
  4046. --------H-54---------------------------------
  4047. INT 54 - IRQ4 relocated by DESQview
  4048. Note:    this is the default location for older versions; see INT 50"DESQview"
  4049.       for details of interrupt relocation
  4050. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4051. --------H-54---------------------------------
  4052. INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4053. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4054. --------H-55---------------------------------
  4055. INT 55 - IRQ5 relocated by DESQview
  4056. Note:    this is the default location for older versions; see INT 50"DESQview"
  4057.       for details of interrupt relocation
  4058. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4059. --------H-55---------------------------------
  4060. INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4061. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4062. --------H-56---------------------------------
  4063. INT 56 - IRQ6 relocated by DESQview
  4064. Note:    this is the default location for older versions; see INT 50"DESQview"
  4065.       for details of interrupt relocation
  4066. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4067. --------H-56---------------------------------
  4068. INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4069. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4070. --------H-57---------------------------------
  4071. INT 57 - IRQ7 relocated by DESQview
  4072. Note:    this is the default location for older versions; see INT 50"DESQview"
  4073.       for details of interrupt relocation
  4074. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4075. --------H-57---------------------------------
  4076. INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4077. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4078. --------H-58---------------------------------
  4079. INT 58 - IRQ8 relocated by DESQview 2.26+
  4080. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4081. SeeAlso: INT 50"DESQview",INT 70
  4082. --------H-58---------------------------------
  4083. INT 58 - IRQ0 relocated by DoubleDOS
  4084. SeeAlso: INT 08
  4085. --------H-59---------------------------------
  4086. INT 59 - IRQ9 relocated by DESQview 2.26+
  4087. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4088. SeeAlso: INT 50"DESQview",INT 71
  4089. --------H-59---------------------------------
  4090. INT 59 - IRQ1 relocated by DoubleDOS
  4091. SeeAlso: INT 09
  4092. --------V-59---------------------------------
  4093. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  4094.     DS:DX -> block of 5 array pointers
  4095. Return: CF set on error
  4096.         AX = error code
  4097.     CF clear if successful
  4098.         AX = return code
  4099. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  4100.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  4101.     also used by the IBM Graphic Development Toolkit
  4102. --------H-5A---------------------------------
  4103. INT 5A - IRQ10 relocated by DESQview 2.26+
  4104. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4105. SeeAlso: INT 50"DESQview",INT 72
  4106. --------H-5A---------------------------------
  4107. INT 5A - IRQ2 relocated by DoubleDOS
  4108. SeeAlso: INT 0A
  4109. --------N-5A---------------------------------
  4110. INT 5A - Cluster adapter BIOS entry address
  4111.     ???
  4112. --------H-5B---------------------------------
  4113. INT 5B - IRQ11 relocated by DESQview 2.26+
  4114. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4115. SeeAlso: INT 50"DESQview",INT 73
  4116. --------H-5B---------------------------------
  4117. INT 5B - IRQ3 relocated by DoubleDOS
  4118. SeeAlso: INT 0B
  4119. --------N-5B---------------------------------
  4120. INT 5B - Used by cluster adapter
  4121. --------N-5B---------------------------------
  4122. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  4123.     ES:BX -> Network Control Block (see below)
  4124. Return: AL = status (see INT 5C)
  4125. SeeAlso: INT 5C
  4126.  
  4127. Format of Network Control Block
  4128. Offset    Size    Description
  4129.  00h    BYTE    ncb_command (see below)
  4130.  01h    BYTE    ncb_retcode
  4131.  02h    BYTE    ncb_lsn
  4132.  03h    BYTE    ncb_num
  4133.  04h    DWORD    -> ncb_buffer
  4134.  08h    WORD    ncb_length
  4135.  0Ah 16 BYTEs    ncb_callname
  4136.  1Ah 16 BYTEs    ncb_name
  4137.  2Ah    BYTE    ncb_rto
  4138.  2Bh    BYTE    ncb_sto
  4139.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  4140.  30h    BYTE    ncb_lana_num
  4141.  31h    BYTE    ncb_cmd_cplt
  4142.  32h    DWORD    -> ncb_vname
  4143.  36h    BYTE    ncb_vnamelen
  4144.  37h  9 BYTEs    ncb_reserve
  4145. Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
  4146.  
  4147. Values for ncb_command field same as for INT 5C, except
  4148.  70h    send net Break
  4149. --------N-5B---------------------------------
  4150. INT 5B - Microsoft Network Transport Layer Interface
  4151. Note:    used by MS-NET for executing network commands
  4152. SeeAlso: INT 5C"NetBIOS"
  4153. --------N-5B---------------------------------
  4154. INT 5B - used by Alloy NTNX
  4155. --------N-5B---------------------------------
  4156. INT 5B - ISOLAN Multi Protocol Software
  4157.     ES:BX -> Transfer Control Block
  4158. Return: AL - status
  4159. Note:    this software interface allows multiple protocols/software packages
  4160.       to access a BICC 411x network card
  4161.  
  4162. Format of Transfer Control Block:
  4163. Offset    Type    Description
  4164.  00h    BYTE    command code
  4165.         B3h Status
  4166.         F2h Activate
  4167.         F3h Deactivate
  4168.         F4h Send Data
  4169.  01h    BYTE    command identity
  4170.  02h    BYTE    virtual circuit ID
  4171.  03h    WORD    buffer length
  4172.  05h    DWORD    buffer pointer
  4173.  09h    BYTE    expedited data flag
  4174.  0Ah    BYTE    cancelable flag
  4175.  0Bh 16 BYTEs    local network address
  4176.  1Bh 16 BYTEs    remote network address
  4177.  2Bh    DWORD    asynchronous notification routine
  4178.  30h    DWORD    local network number
  4179.  34h    DWORD    remote network number
  4180.  38h    BYTE    call timeout
  4181.  39h    BYTE    not used
  4182.  3Ah  8 BYTEs    reserved
  4183.  42h    BYTE    command code extension
  4184.  43h    WORD    Blue Book MAC type
  4185. ----------5B5254DL04-------------------------
  4186. INT 5B U - SitBack v3.02R - GET ???
  4187.     AX = 5254h
  4188.     DL = 04h
  4189. Return: ES:BX -> ??? in resident portion
  4190. Program: SitBack is a background file backup utility by SitBack Technologies,
  4191.       Inc. which initiates backups whenever the system is idle
  4192. SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
  4193. ----------5B8485DL70-------------------------
  4194. INT 5B U - SitBack v3.02R - INSTALLATION CHECK
  4195.     AX = 8485h
  4196.     DL = 70h
  4197. Return: CX = 8485h if installed
  4198.         DX:AX -> ??? (configuration data?)
  4199. Program: SitBack is a background file backup utility by SitBack Technologies,
  4200.       Inc. which initiates backups whenever the system is idle
  4201. SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
  4202. ----------5B8485DL71-------------------------
  4203. INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
  4204.     AX = 8485h
  4205.     DL = 71h
  4206. Return: ES:BX -> FAR entry point to ???
  4207. Note:    the flag which is modified is located at the address returned by
  4208.        AX=5254h/DL=04h
  4209. SeeAlso: AX=8485h/DL=72h
  4210. ----------5B8485DL72-------------------------
  4211. INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
  4212.     AX = 8485h
  4213.     DL = 72h
  4214. Note:    the flag which is modified is located at the address returned by
  4215.        AX=5254h/DL=04h
  4216. SeeAlso: AX=8485h/DL=71h
  4217. ----------5B8485DL73-------------------------
  4218. INT 5B U - SitBack v3.02R - ???
  4219.     AX = 8485h
  4220.     DL = 73h
  4221.     ???
  4222. Return: ???
  4223. ----------5B8485DL74-------------------------
  4224. INT 5B U - SitBack v3.02R - ???
  4225.     AX = 8485h
  4226.     DL = 74h
  4227.     ???
  4228. Return: ???
  4229. ----------5B8485DL75-------------------------
  4230. INT 5B U - SitBack v3.02R - ???
  4231.     AX = 8485h
  4232.     DL = 75h
  4233.     CX = ???
  4234. Return: ???
  4235. SeeAlso: AX=8485h/DL=76h
  4236. ----------5B8485DL76-------------------------
  4237. INT 5B U - SitBack v3.02R - ???
  4238.     AX = 8485h
  4239.     DL = 76h
  4240.     CX = ???
  4241. Return: ???
  4242. Note:    conditionally calls the code for AX=8485h/DL=75h
  4243. SeeAlso: AX=8485h/DL=75h
  4244. ----------5B8485DL77-------------------------
  4245. INT 5B U - SitBack v3.02R - SET ??? FLAG
  4246.     AX = 8485h
  4247.     DL = 77h
  4248. ----------5B8485DL78-------------------------
  4249. INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
  4250.     AX = 8485h
  4251.     DL = 78h
  4252. Return: CX = 5342h if supported
  4253.         ES = AX = segment of TSR data
  4254. SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
  4255. ----------5B8485DL79-------------------------
  4256. INT 5B U - SitBack v3.02R - GET DTA
  4257.     AX = 8485h
  4258.     DL = 79h
  4259. Return: CX = 5342h if supported
  4260.         ES:BX -> DTA set by last INT 21/AH=1Ah
  4261. Note:    this function is provided by SBOS.EXE rather than SB.EXE
  4262. SeeAlso: INT 21/AH=1Ah
  4263. ----------5B8485DL7A-------------------------
  4264. INT 5B U - SitBack v3.02R - TOGGLE ???
  4265.     AX = 8485h
  4266.     DL = 7Ah
  4267. Return: CX = 5342h if supported
  4268.         AL = new value of ??? (00h or 01h)
  4269. --------H-5C---------------------------------
  4270. INT 5C - IRQ12 relocated by DESQview 2.26+
  4271. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4272. SeeAlso: INT 50"DESQview",INT 74
  4273. --------H-5C---------------------------------
  4274. INT 5C - IRQ4 relocated by DoubleDOS
  4275. SeeAlso: INT 0C
  4276. --------N-5C---------------------------------
  4277. INT 5C - NetBIOS INTERFACE
  4278.     ES:BX -> network control block (NCB) (see below)
  4279. Return: AL = status (see below)
  4280. Note:    Sytek PCnet card uses DMA 3.
  4281. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  4282.  
  4283. Values for NetBIOS status:
  4284.  00h    successful
  4285.  01h    bad buffer size
  4286.  03h    invalid NETBIOS command
  4287.  05h    timeout
  4288.  06h    receive buffer too small
  4289.  07h    No-ACK command failed
  4290.  08h    bad session number
  4291.  09h    LAN card out of memory
  4292.  0Ah    session closed
  4293.  0Bh    command has been cancelled
  4294.  0Dh    name already exists
  4295.  0Eh    local name table full
  4296.  0Fh    name still in use, can't delete
  4297.  11h    local session table full
  4298.  12h    remote PC not listening
  4299.  13h    bad NCB_NUM field
  4300.  14h    no answer to CALL or no such remote
  4301.  15h    name not in local name table
  4302.  16h    duplicate name
  4303.  17h    bad delete
  4304.  18h    abnormal end
  4305.  19h    name error, multiple identical names in use
  4306.  1Ah    bad packet
  4307.  21h    network card busy
  4308.  22h    too many commands queued
  4309.  23h    bad LAN card number
  4310.  24h    command finished while cancelling
  4311.  26h    command can't be cancelled
  4312.  30h    name defined by another process (OS/2)
  4313.  34h    NetBIOS environment not defined, must issue reset (OS/2)
  4314.  35h    required operating system resources exhausted (OS/2)
  4315.  36h    maximum applications exceeded (OS/2)
  4316.  37h    no SAPs available for NetBIOS (OS/2)
  4317.  38h    requested resources not available (OS/2)
  4318.  40h    Lana System Error
  4319.  41h    Lana Remote Hot Carrier
  4320.  42h    Lana Local Hot Carrier
  4321.  43h    Lana No Carrier Detected
  4322.  44h    unusual network condition
  4323.  45h-4Dh hardware error
  4324.  4Eh    token ring is broken
  4325.  4Fh    token ring error
  4326.  50h    adapter malfunction
  4327.  F7h    error in explicit INITIALIZE
  4328.  F8h    error in implicit OPEN
  4329.  F9h    TOKREUI internal error
  4330.  FAh    hardware adapter testing
  4331.  FBh    NetBIOS emulator not found
  4332.  FCh    OPEN or OPEN_SAP failure
  4333.  FDh    unexpected adapter closure
  4334.  FFh    NetBIOS busy (command pending)
  4335.  
  4336. Format of Network Control Block:
  4337. Offset    Size    Description
  4338.  00h    BYTE    command code (see below)
  4339.  01h    BYTE    return code
  4340.  02h    BYTE    local session number (LSN)
  4341.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  4342.  04h    DWORD    -> I/O buffer
  4343.  08h    WORD    length of data in buffer
  4344.  0Ah 16 BYTEs    remote system to call
  4345.  1Ah 16 BYTEs    network name of local machine
  4346.  2Ah    BYTE    receive timeout in 1/2 seconds
  4347.  2Bh    BYTE    send timeout in 1/2 seconds
  4348.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  4349.  30h    BYTE    network adapter number on which to execute command
  4350.         00h-03h IBM NetBIOS specs
  4351.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  4352.  31h    BYTE    command completion code (see returned status above)
  4353.  32h 14 BYTEs    reserved for network card
  4354.  
  4355. Values for command code field in NCB (OR with 80h for non-waiting call):
  4356.  10h    start session with NCB_NAME name (call)
  4357.  11h    listen for call
  4358.  12h    end session with NCB_NAME name (hangup)
  4359.  14h    send data via NCB_LSN
  4360.  15h    receive data from a session
  4361.  16h    receive data from any session
  4362.  17h    send multiple data buffers
  4363.  20h    send unACKed message (datagram)
  4364.  21h    receive datagram
  4365.  22h    send broadcast datagram
  4366.  23h    receive broadcast datagram
  4367.  30h    add name to name table
  4368.  31h    delete name from name table
  4369.  32h    reset adapter card and tables
  4370.  33h    get adapter status (see structure "astatus" below)
  4371.  34h    status of all sessions for name (see structure "sstatus" below)
  4372.  35h    cancel
  4373.  36h    add group name to name table
  4374.  48h    send data and receive data (LAN Manager NETBEUI.DOS)
  4375.  70h    unlink from IBM remote program (no F0h function)
  4376.  71h    send data without ACK
  4377.  72h    send multiple buffers without ACK
  4378.  72h    UngermannBass Register (conflicts with above function)
  4379.  73h    UngermannBass SendNmc
  4380.  74h    UngermannBass Callniu
  4381.  75h    UngermannBass Calladdr
  4382.  76h    UngermannBass Listenaddr
  4383.  77h    UngermannBass SendPkt
  4384.  78h    find name
  4385.  78h    UngermannBass RcvPkt (conflicts with above function)
  4386.  79h    token-ring protocol trace
  4387.  79h    UngermannBass SendAttn (conflicts with above function)
  4388.  7Ah    UngermannBass RcvAttn
  4389.  7Bh    UngermannBass Listenniu
  4390.  7Ch    UngermannBass RcvRaw
  4391.  7Dh    UngermannBass SendNmc2
  4392.  7Fh    Beame&Whiteside BWNB installation check (returns with return code and
  4393.     completion code both set to 03h, while invalid functions return only
  4394.     return code field set to 03h)
  4395.  
  4396. Format of structure "name":
  4397. Offset    Size    Description
  4398.  00h 16 BYTEs "nm_name" symbolic name
  4399.  10h    BYTE  "nm_num" number associated with name
  4400.  11h    BYTE  nm_status
  4401.  
  4402. Format of structure "astatus":
  4403. Offset    Size    Description
  4404.  00h  6 BYTEs as_id
  4405.  06h    BYTE  as_jumpers
  4406.  07h    BYTE  as_post
  4407.  08h    BYTE  as_major
  4408.  09h    BYTE  as_minor
  4409.  0Ah    WORD  as_interval
  4410.  0Ch    WORD  as_crcerr
  4411.  0Eh    WORD  as_algerr
  4412.  10h    WORD  as_colerr
  4413.  12h    WORD  as_abterr
  4414.  14h    DWORD as_tcount
  4415.  18h    DWORD as_rcount
  4416.  1Ch    WORD  as_retran
  4417.  1Eh    WORD  as_xresrc
  4418.  20h  8 BYTEs as_res0
  4419.  28h    WORD  as_ncbfree
  4420.  2Ah    WORD  as_ncbmax
  4421.  2Ch    WORD  as_ncbx
  4422.  2Eh  4 BYTEs as_res1
  4423.  32h    WORD  as_sespend
  4424.  34h    WORD  as_msp
  4425.  36h    WORD  as_sesmax
  4426.  38h    WORD  as_bufsize
  4427.  3Ah    WORD  as_names
  4428.  3Ch 16 name structures     as_name
  4429.  
  4430. Format of structure "sstatus":
  4431. Offset    Size    Description
  4432.  00h    BYTE    number of sessions being reported
  4433.  01h    BYTE    number of sessions with this name
  4434.  02h    BYTE    number of outstanding receive datagrams
  4435.  03h    BYTE    number of outstanding ReceiveAnys
  4436.  04h    var    session structures (see below)
  4437.  
  4438. Format of structure "session":
  4439. Offset    Size    Description
  4440.  00h    BYTE    local session number
  4441.  01h    BYTE    state
  4442.         01h listen pending
  4443.         02h call pending
  4444.         03h session established
  4445.         04h hangup pending
  4446.         05h hangup done
  4447.         06h session aborted
  4448.  02h 16 BYTEs    local name
  4449.  12h 16 BYTEs    remote name
  4450.  22h    BYTE    number of outstanding receives
  4451.  23h    BYTE    number of outstanding sends/chainsends
  4452. --------N-5C---------------------------------
  4453. INT 5C - TOPS INTERFACE
  4454.     ES:BX -> Network Control Block
  4455. Note:    TOPS card uses DMA 1, 3 or none.
  4456. --------N-5C---------------------------------
  4457. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  4458.     DX:BX -> control block (see below)
  4459. Return: none
  4460. Notes:    this driver can use any interrupt from 5Ch to 70h
  4461.     the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  4462.       handler; this serves as the installation check
  4463. Index:    installation check;ATALK.SYS|installation check;AppleTalk interface
  4464.  
  4465. Values for command code:
  4466.  01h    "AT_INIT"        initialize the driver
  4467.  02h    "AT_KILL"
  4468.  03h    "AT_GETNETINFO" get current network info incl init status
  4469.  04h    "AT_GETCLOCKTICKS"
  4470.  05h    "AT_STARTTIMER"
  4471.  06h    "AT_RESETTIMER"
  4472.  07h    "AT_CANCELTIMER"
  4473.  10h    "LAP_INSTALL"
  4474.  11h    "LAP_REMOVE"
  4475.  12h    "LAP_WRITE"
  4476.  13h    "LAP_READ"
  4477.  14h    "LAP_CANCEL"
  4478.  20h    "DDP_OPENSOCKET"
  4479.  21h    "DDP_CLOSESOCKET"
  4480.  22h    "DDP_WRITE"
  4481.  23h    "DDP_READ"
  4482.  24h    "DDP_CANCEL"
  4483.  30h    "NBP_REGISTER"
  4484.  31h    "NBP_REMOVE"
  4485.  32h    "NBP_LOOKUP"
  4486.  33h    "NBP_CONFIRM"
  4487.  34h    "NBP_CANCEL"
  4488.  35h    "ZIP_GETZONELIST"
  4489.  36h    "ZIP_GETMYZONE"
  4490.  37h    "ZIP_TAKEDOWN"
  4491.  38h    "ZIP_BRINGUP"
  4492.  40h    "ATP_OPENSOCKET"
  4493.  41h    "ATP_CLOSESOCKET"
  4494.  42h    "ATP_SENDREQUEST"
  4495.  43h    "ATP_GETREQUEST"
  4496.  44h    "ATP_SENDRESPONSE"
  4497.  45h    "ATP_ADDRESPONSE"
  4498.  46h    "ATP_CANCELTRANS"
  4499.  47h    "ATP_CANCELRESPONSE"
  4500.  48h    "ATP_CANCELREQUEST"
  4501.  50h    "ASP_GETPARMS"
  4502.  51h    "ASP_CLOSESESSION"
  4503.  52h    "ASP_CANCEL"
  4504.  53h    "ASP_INIT"
  4505.  54h    "ASP_KILL"
  4506.  55h    "ASP_GETSESSION"
  4507.  56h    "ASP_GETREQUEST"
  4508.  57h    "ASP_CMDREPLY"
  4509.  58h    "ASP_WRTCONTINUE"
  4510.  59h    "ASP_WRTREPLY"
  4511.  5Ah    "ASP_CLOSEREPLY"
  4512.  5Bh    "ASP_NEWSTATUS"
  4513.  5Ch    "ASP_ATTENTION"
  4514.  5Dh    "ASP_GETSTATUS"
  4515.  5Eh    "ASP_OPENSESSION"
  4516.  5Fh    "ASP_COMMAND"
  4517.  60h    "ASP_WRITE"
  4518.  61h    "ASP_GETATTENTION"
  4519.  70h    "PAP_OPEN"
  4520.  71h    "PAP_CLOSE"
  4521.  72h    "PAP_READ"
  4522.  73h    "PAP_WRITE"
  4523.  74h    "PAP_STATUS"
  4524.  75h    "PAP_REGNAME"
  4525.  76h    "PAP_REMNAME"
  4526.  77h    "PAP_INIT"
  4527.  78h    "PAP_NEWSTATUS"
  4528.  79h    "PAP_GETNEXTJOB"
  4529.  7Ah    "PAP_KILL"
  4530.  7Bh    "PAP_CANCEL"
  4531.  
  4532. Format of AppleTalk control block:
  4533. Offset    Size    Description
  4534.  00h    WORD    command code (see above)
  4535.         OR with the following flags
  4536.         8000h start command then return
  4537.         4000h wait for interrupt service to complete
  4538.  02h    WORD    returned status
  4539.         0000h success (already initialized if func 01h)
  4540.  04h    DWORD    pointer to completion function
  4541.  08h    WORD    network number
  4542.  0Ah    BYTE    node ID
  4543. ---if general func (01h,03h), control block continues:
  4544.  0Bh    BYTE    "inf_abridge"
  4545.  0Ch    WORD    "inf_config"
  4546.  0Eh    DWORD    pointer to buffer
  4547.  12h    WORD    buffer size
  4548. ---if DDP function (20h-24h), control block continues:
  4549.  0Bh    BYTE    "ddp_addr_socket"
  4550.  0Ch    BYTE    "ddp_socket"
  4551.  0Dh    BYTE    "ddp_type"
  4552.  0Eh    DWORD    pointer to buffer
  4553.  12h    WORD    buffer size
  4554.  14h    BYTE    "ddp_chksum"
  4555. ---if Name Binding Protocol (30h-34h), control block continues:
  4556.  0Bh    BYTE    "nbp_addr_socket"
  4557.  0Ch    WORD    "nbp_toget"
  4558.  0Eh    DWORD    pointer to buffer
  4559.  12h    WORD    buffer size
  4560.  14h    BYTE    "nbp_interval"
  4561.  15h    BYTE    "nbp_retry"
  4562.  16h    DWORD    "nbp_entptr"
  4563. ---if AppleTalk Transaction Protocol (42h), control block continues:
  4564.  0Bh    BYTE    "atp_addr_socket"
  4565.  0Ch    WORD    "atp_socket"
  4566.  0Eh    DWORD    pointer to buffer
  4567.  12h    WORD    buffer size
  4568.  14h    BYTE    "atp_interval"
  4569.  15h    BYTE    "atp_retry"
  4570.  16h    BYTE    ATP flags
  4571.         bit 5: exactly one transaction
  4572.  17h    BYTE    "atp_seqbit"
  4573.  18h    BYTE    transaction ID
  4574.  19h  4 BYTEs    ATP user bytes
  4575.  1Dh    BYTE    number of BDS buffers
  4576.  1Eh    BYTE    number of BDS responses
  4577.  1Fh    DWORD    pointer to BDS buffers (see below)
  4578.  
  4579. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  4580. Offset    Size    Description
  4581.  00h    WORD    "tup_address_network"
  4582.  02h    BYTE    "tup_address_notid"
  4583.  03h    BYTE    "tup_address_socket"
  4584.  04h    BYTE    "tup_enum"
  4585.  05h 99 BYTEs    name
  4586.  
  4587. Format of BDS entries:
  4588. Offset    Size    Description
  4589.  00h    DWORD    pointer to buffer
  4590.  04h    WORD    size of buffer
  4591.  06h    WORD    BDS data size
  4592.  08h  4 BYTEs    "bds_userbytes"
  4593. --------N-5C---------------------------------
  4594. INT 5C - IBM 802.2 INTERFACE (LLC)
  4595.     ES:BX -> CCB (see below)
  4596. Return: none
  4597.  
  4598. Format of CCB:
  4599. Offset    Size    Description
  4600.  00h    BYTE    adapter
  4601.  01h    BYTE    command code
  4602.  02h    BYTE    return code
  4603.  03h    BYTE    work
  4604.  04h    DWORD    pointer to ???
  4605.  08h    DWORD    pointer to completion function???
  4606.  0Ch    DWORD    pointer to parameters???
  4607. --------N-5C---------------------------------
  4608. INT 5C - $25 LAN - INSTALLATION CHECK
  4609. Notes:    current versions only check whether the vector is 0000h:0000h or not
  4610.     future versions are supposed to have the signature "NET" in the three
  4611.       bytes preceding the INT 5C handler
  4612. --------N-5C04-------------------------------
  4613. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  4614.     AH = 04h
  4615.     AL = COM port (0 = default)
  4616.     CX = wait count in character times (should be at least 100)
  4617. Return: ZF set if link alive
  4618. --------H-5D---------------------------------
  4619. INT 5D - IRQ13 relocated by DESQview 2.26+
  4620. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4621. SeeAlso: INT 50"DESQview",INT 75
  4622. --------H-5D---------------------------------
  4623. INT 5D - IRQ5 relocated by DoubleDOS
  4624. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  4625. --------H-5E---------------------------------
  4626. INT 5E - IRQ14 relocated by DESQview 2.26+
  4627. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4628. SeeAlso: INT 50"DESQview",INT 76
  4629. --------H-5E---------------------------------
  4630. INT 5E - IRQ6 relocated by DoubleDOS
  4631. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  4632. --------H-5F---------------------------------
  4633. INT 5F - IRQ15 relocated by DESQview 2.26+
  4634. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4635. SeeAlso: INT 50"DESQview",INT 77
  4636. --------H-5F---------------------------------
  4637. INT 5F - IRQ7 relocated by DoubleDOS
  4638. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  4639. --------b-5F00-------------------------------
  4640. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  4641.     AH = 00h
  4642.     AL = video mode
  4643.         07h text, system manager compliant
  4644.         20h 240x128 mono graphics, system manager compliant
  4645.         87h text, not system manager compliant
  4646.         A0h 240x128 mono graphics, not system manager compliant
  4647. Note:    the defaults after setting the mode to graphics are (0,0) logical
  4648.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  4649.       pixel replacement FORCE, line type and fill mask all bits set
  4650. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  4651. --------b-5F01-------------------------------
  4652. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
  4653.     AH = 01h
  4654.     ES:DI -> 8-byte fill mask
  4655. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  4656.       when drawing filled rectangles; it is always aligned with the byte
  4657.       boundaries of video memory, regardless of the actual boundaries of
  4658.       the rectangle
  4659. SeeAlso: AH=02h
  4660. --------b-5F02-------------------------------
  4661. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
  4662.     AH = 02h
  4663.     ES:DI -> graphics info record (see below)
  4664. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  4665.  
  4666. Format of graphics info record:
  4667. Offset    Size    Description
  4668.  00h    BYTE    current video mode
  4669.  01h    BYTE    default video mode
  4670.  02h    WORD    display width in pixels
  4671.  04h    WORD    display height in pixels
  4672.  06h    WORD    current pen column
  4673.  08h    WORD    current pen row
  4674.  0Ah    WORD    current line type
  4675.  0Ch    WORD    current replacement rule
  4676.  0Eh    WORD    current pen color
  4677.  10h    WORD    current leftmost column of clip region
  4678.  12h    WORD    current rightmost column of clip region
  4679.  14h    WORD    current topmost row of clip region
  4680.  16h    WORD    current bottommost row of clip region
  4681.  18h    WORD    current column of logical origin
  4682.  1Ah    WORD    current row of logical origin
  4683.  1Ch  8 BYTEs    current fill mask
  4684. --------b-5F03-------------------------------
  4685. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  4686.     AH = 03h
  4687.     CX = column
  4688.     DX = row
  4689. SeeAlso: AH=04h
  4690. --------b-5F04-------------------------------
  4691. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
  4692.     AH = 04h
  4693.     CX = left-most column
  4694.     DX = top-most row
  4695.     SI = right-most column
  4696.     DI = bottom-most row
  4697. SeeAlso: AH=03h
  4698. --------b-5F05-------------------------------
  4699. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  4700.     AH = 05h
  4701.     AL = fill type
  4702.         00h outline, using current line type and color
  4703.         01h solid, using current color
  4704.         02h pattern, using current fill mask and color
  4705.     DX,CX = row,column of other corner of rectangle
  4706. Note:    the rectangle is drawn starting at the current pen position
  4707. SeeAlso: AH=01h,AH=06h,AH=07h
  4708. --------b-5F06-------------------------------
  4709. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
  4710.     AH = 06h
  4711.     DX,CX = row,column of end point
  4712. Note:    the line is drawn starting at the current pen position
  4713. SeeAlso: AH=05h,AH=07h
  4714. --------b-5F07-------------------------------
  4715. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
  4716.     AH = 07h
  4717.     DX,CX = row,column of point
  4718. Note:    also sets pen position to the specified point
  4719. SeeAlso: AH=06h,AH=08h,AH=0Ch
  4720. --------b-5F08-------------------------------
  4721. INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
  4722.     AH = 08h
  4723.     DX,CX = row,column of new pen position
  4724. SeeAlso: AH=07h,AH=09h
  4725. --------b-5F09-------------------------------
  4726. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
  4727.     AH = 09h
  4728.     AL = new color (00h = white, 01h = black)
  4729. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  4730. --------b-5F0A-------------------------------
  4731. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  4732.     AH = 0Ah
  4733.     AL = new replacement rule
  4734.         00h force
  4735.         01h AND
  4736.         02h OR
  4737.         03h XOR
  4738. SeeAlso: AH=01h,AH=09h,AH=0Bh
  4739. --------b-5F0B-------------------------------
  4740. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
  4741.     AH = 0Bh
  4742.     CX = new line type
  4743. Note:    the line type specifies 16 bits which are repeated over and over while
  4744.       drawing the pixels of a line
  4745. SeeAlso: AH=09h,AH=0Ah
  4746. --------b-5F0C-------------------------------
  4747. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
  4748.     AH = 0Ch
  4749.     DX,CX = row,column of pixel to read
  4750. Return: AX = pixel color
  4751. SeeAlso: AH=07h
  4752. --------b-5F0D-------------------------------
  4753. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
  4754.     AH = 0Dh
  4755.     DX,CX = row,column of first corner
  4756.     BP,SI = row,column of second corner
  4757.     ES:DI -> image buffer (see below)
  4758. Note:    the specified corners are included in the saved image
  4759. SeeAlso: AH=0Eh
  4760.  
  4761. Format of image buffer:
  4762. Offset    Size    Description
  4763.  00h    WORD    number of planes (always 01h on HP 95LX)
  4764.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  4765.  04h    WORD    image width in pixels
  4766.  06h    WORD    image height in pixels
  4767.  08h  N BYTEs    image data
  4768.         requires (WIDTH+7)/8 * HEIGHT bytes
  4769. --------b-5F0E-------------------------------
  4770. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
  4771.     AH = 0Eh
  4772.     AL = replacement rule
  4773.         bit 2: invert image before applying rule
  4774.         bits 1-0:  00 force
  4775.                01 AND
  4776.                10 OR
  4777.                11 XOR
  4778.     DX,CX = row,column of top left corner
  4779.     ES:DI -> image buffer (see AH=0Dh)
  4780. Note:    if the specified image does not fit completely on the screen, this call
  4781.       does nothing
  4782. SeeAlso: AH=0Dh
  4783. --------b-5F0F-------------------------------
  4784. INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
  4785.     AH = 0Fh
  4786.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  4787.     DX,CX = row,column of first character's top left corner
  4788.     ES:DI -> ASCIZ text
  4789. --------!------------------------------------
  4790.